google-deepmind/sonnet

TensorFlow-based neural network library

What it solves

Sonnet 是一个机器学习研究的库,简化了神经网络的构建。它提供一套可组合的抽象,让研究人员能够在不被限制于特定训练框架或固定工作流的情况下,构建复杂模型。

How it works

该库基于 TensorFlow 2 构建,核心围绕 snt.Module 概念。Modules 是自包含、解耦的单元,可以持有参数、其他 modules,以及处理输入的方法。用户可以使用预定义的 modules,如 snt.Linearsnt.nets.MLP,或通过继承 snt.Module 自己创建。

Who it’s for

它面向需要对模型和训练过程拥有高度控制的机器学习研究者,尤其是使用 TensorFlow 生态系统的用户。

Highlights

  • Unopinionated Design: 不包含训练框架,训练循环和优化器的选择交由用户自行决定。
  • Composable Abstractions: 使用 snt.Module 系统,便于网络组件的嵌套。
  • Flexible Serialization: 支持 Python 的 pickle、TensorFlow Checkpointing(保存训练进度)以及 TensorFlow Saved Model(导出与 Python 源码解耦的模型)。
  • Distributed Training Support: 提供通过自定义 TensorFlow 分布策略进行分布式训练的工具,同时保持用户对梯度平均和 batch normalization 统计的控制。