模型创建与nn.Module
- 网络模型创建步骤
- nn.Module属性
在学习模型创建步骤之前,回顾一下前面提到的机器学习模型训练的五大步骤,即:数据、模型、损失函数、优化器和迭代训练。这次我们主要谈论模型模块这部分。
对于模型模块,首先分为两大部分分别是模型的创建和模型权值的初始化。其中在模型创建模块,有分为构建网络层和拼接网络层这两个子模块,我们通过构建类似卷积层、池化层和激活函数层等子模块,再根据一定的顺序或拓扑结构将这些子模块拼接起来,最后就可以构建成类似LeNet、AlexNet和ResNet等深度神经网络。而这些都是基于pytorch中的nn.Module模块来实现的,这是根本也是关键之处。
在人民币二分类实验中,已经实现过了一个神经网络LeNet,这里进行回顾:
可以看到LeNet由7层网络子模块构成,分别是卷积层1,池化层1,卷积层2,池化层2,全连接层1,全连接层2和全连接层3。在构建好这7个子模块之后,我们会将它们按一定的顺序进行连接,之后进行包装即可得到LeNet。
下面从计算图的角度来观察LeNet模型的构建:
计算图前面介绍张量的时候也涉及过,计算图中有两个主要的元素,一个是节点一个是边,节点表示数据,边就是运算。LeNet的模型运算过程是比较复杂的,首先需要对数据(图像)进行卷积操作得到28 x 28 x 6的图像,之后再进行池化处理得到14 x 14 x 6的图像,这样不断地向前向传播,最终得到输出概率。
从这里我们知道,构建模型包含两个要素:构建子模块和拼接子模块。下