Об этом проекте

Sonnet — это библиотека нейтронных сетей с открытым исходным кодом, разработанная исследователями из DeepMind и предназначенная для работы поверх TensorFlow 2. Её основная цель — предоставить простые, композируемые абстракции, которые облегчают исследования в области машинного обучения в различных областях, включая обучение с учителем, без учителя и обучение с подкреплением. Основная модель программирования в Sonnet вращается вокруг класса `snt.Module`. Модули — это самодостаточные единицы, которые могут содержать ссылки на параметры, другие модули и методы. Такая конструкция гарантирует, что модули не зависят друг от друга, что обеспечивает высокую гибкость в их использовании. В отличие от некоторых фреймворков, Sonnet не навязывает конкретный цикл обучения или жёсткую структуру; вместо этого он поощряет пользователей создавать собственную логику обучения или использовать существующие решения. Ключевые особенности включают: - **Предопределённые модули**: Sonnet поставляется с распространёнными строительными блоками, такими как `snt.Linear`, `snt.Conv2D` и `snt.BatchNorm`, а также с готовыми сетями, например MLP. - **Пользовательские модули**: Пользователям рекомендуется создавать подклассы `snt.Module` для создания собственных слоёв или сетей. Создание подклассов даёт автоматические преимущества, такие как управление параметрами (свойства `variables` и `trainable_variables`), области имён для визуализации в TensorBoard и поддержка контрольных точек TensorFlow. - **Сериализация**: Библиотека поддерживает сохранение и загрузку моделей с помощью Python `pickle` (хотя это не рекомендуется из-за хрупкости) и нативных форматов контрольных точек и Saved Model TensorFlow. Это обеспечивает надёжное сохранение и развёртывание моделей. - **Распределённое обучение**: Sonnet поддерживает распределённое обучение с использованием пользовательских стратегий распределения TensorFlow. Он даёт пользователям полный контроль над усреднением градиентов и синхронизацией статистики пакетной нормализации, а не встраивает эти поведения в библиотеку автоматически. Установка требует TensorFlow 2 и TensorFlow Probability, после чего устанавливается `dm-sonnet`. Примеры доступны через блокноты Google Colab для таких задач, как классификация MNIST, обучение GAN и распределённое обучение CIFAR-10.