ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Sonnet Sonnet 是一个用 Python 编写的面向对象的库。它是由 DeepMind 在 2017 年发布的.Sonnet 打算从对象中清晰地分离构建计算图的以下两个方面: * 对象的配置称为模块 * 对象与计算图的连接 可以使用以下命令在 Son 3 中安装 Sonnet: ```py pip3 install dm-sonnet ``` 可以按照以下链接的说明从源安装 Sonnet:[https://github.com/deepmind/sonnet/blob/master/docs/INSTALL.md](https://github.com/deepmind/sonnet/blob/master/docs/INSTALL.md)。 模块被定义为抽象类`sonnet.AbstractModule`的子类。在编写本书时,Sonnet 中提供了以下模块: | 基本模块 | `AddBias`,`BatchApply`,`BatchFlatten`,`BatchReshape`,`FlattenTrailingDimensions`,`Linear`,`MergeDims`,`SelectInput`,`SliceByDim`,`TileByDim`和`TrainableVariable` | | --- | --- | | 循环模块 | `DeepRNN`,`ModelRNN`,`VanillaRNN`,`BatchNormLSTM`,`GRU`和`LSTM` | | Recurrent + ConvNet 模块 | `Conv1DLSTM`和`Conv2DLSTM` | | ConvNet 模块 | `Conv1D`,`Conv2D`,`Conv3D`,`Conv1DTranspose`,`Conv2DTranspose`,`Conv3DTranspose`,`DepthWiseConv2D`,`InPlaneConv2D`和`SeparableConv2D` | | ResidualNets | `Residual`,`ResidualCore`和`SkipConnectionCore` | | 其他 | `BatchNorm`,`LayerNorm`,`clip_gradient`和`scale_gradient` | 我们可以通过创建`sonnet.AbstractModule`的子类来定义我们自己的新模块。从函数创建模块的另一种非推荐方法是通过传递要包装为模块的函数来创建`sonnet.Module`类的对象。 在 Sonnet 库中构建模型的工作流程如下: 1. 为从`sonnet.AbstractModule`继承的数据集和网络体系结构创建类。在我们的示例中,我们创建了一个 MNIST 类和一个 MLP 类。 2. 定义参数和超参数。 3. 从上一步中定义的数据集类定义测试和训练数据集。 4. 使用定义的网络类定义模型。例如,在我们的案例中,`model = MLP([20, n_classes])`创建了一个 MLP 网络,其中包含两层 20 和每个神经元`n_classes`的数量。 5. 使用模型为训练和测试集定义`y_hat`占位符。 1. 定义训练和测试集的损失占位符。 2. 使用训练损失占位符定义优化程序。 3. 在 TensorFlow 会话中执行所需数量的周期的损失函数以优化参数。 笔记本电脑`ch-02_TF_High_Level_Libraries`中提供了 Sonnet MNIST 分类示例的完整代码。 每个类中的`__init__`方法初始化类和相关的超类。 `_build`方法在调用类时创建并返回数据集或模型对象。 Sonnet MNIST 示例的输出如下: ```py Epoch : 0 Training Loss : 236.79913330078125 Epoch : 1 Training Loss : 227.3693084716797 Epoch : 2 Training Loss : 221.96337890625 Epoch : 3 Training Loss : 220.99142456054688 Epoch : 4 Training Loss : 215.5921173095703 Epoch : 5 Training Loss : 213.88958740234375 Epoch : 6 Training Loss : 203.7091064453125 Epoch : 7 Training Loss : 204.57427978515625 Epoch : 8 Training Loss : 196.17218017578125 Epoch : 9 Training Loss : 192.3954315185547 Test loss : 192.8847198486328 ``` 由于神经网络中计算的随机性,您的输出可能会有所不同。这包括我们对 Sonnet 模块的概述。 有关 Sonnet 的更多详细信息,您可以浏览以下链接:[https://deepmind.github.io/sonnet/](https://deepmind.github.io/sonnet/)。