Sobre o projeto

Sonnet é uma biblioteca de redes neurais de código aberto desenvolvida por pesquisadores da DeepMind, projetada para funcionar sobre o TensorFlow 2. Seu objetivo principal é fornecer abstrações simples e compostáveis que facilitem a pesquisa em aprendizado de máquina em vários domínios, incluindo aprendizado supervisionado, não supervisionado e por reforço. O modelo de programação central do Sonnet gira em torno da classe `snt.Module`. Módulos são unidades autossuficientes que podem conter referências a parâmetros, outros módulos e métodos. Esse design garante que os módulos sejam desacoplados uns dos outros, permitindo alta flexibilidade em como são usados. Diferente de alguns frameworks, o Sonnet não impõe um loop de treinamento específico ou uma estrutura opinativa; em vez disso, incentiva os usuários a construir sua própria lógica de treinamento ou adotar soluções existentes. Os principais recursos incluem: - **Módulos Predefinidos**: O Sonnet inclui blocos de construção comuns, como `snt.Linear`, `snt.Conv2D` e `snt.BatchNorm`, além de redes pré-construídas, como MLPs. - **Módulos Personalizados**: Os usuários são incentivados a subclassificar `snt.Module` para criar camadas ou redes personalizadas. A subclassificação oferece benefícios automáticos, como gerenciamento de parâmetros (propriedades `variables` e `trainable_variables`), escopo de nomes para visualização no TensorBoard e suporte a checkpoints do TensorFlow. - **Serialização**: A biblioteca suporta salvar e carregar modelos via `pickle` do Python (embora desencorajado devido à fragilidade) e os formatos nativos de checkpoint e Saved Model do TensorFlow. Isso permite persistência e implantação robustas de modelos. - **Treinamento Distribuído**: O Sonnet oferece suporte a treinamento distribuído usando estratégias personalizadas de distribuição do TensorFlow. Dá aos usuários controle total sobre a média de gradientes e a sincronização de estatísticas de normalização em lote, em vez de incorporar esses comportamentos automaticamente na biblioteca. A instalação requer TensorFlow 2 e TensorFlow Probability, seguida da instalação de `dm-sonnet`. Exemplos estão disponíveis via notebooks do Google Colab para tarefas como classificação MNIST, treinamento de GANs e treinamento distribuído de CIFAR-10.