5.2 模型容器
一、模型容器 二、观察AlexNet网络是如何搭建的
一、模型容器(Containers)在pytorch提供的模型容器中,有三个非常常用的。
第一个是nn.Sequetial。它的作用是按顺序地将一组网络层包装起来。 第二个是nn.ModuleList。它会像python的list一样包装多个网络层。 第三个是nn.ModuleDict。它像Python的dict一样包装多个网络层,给每个网络层加上一个名称,可以通过命名索引我们的网络层。
1. nn.Sequetial我们先来学习nn.Sequetial这个容器。 nn.Sequetial是按顺序包装一组网络层,使这组网络层被看作是一个整体,看作是模型当中的一个子模块。 比如,在LeNet中将前面的卷积池化卷积池化进行包装,把它称为特征提取器;之后把全连接层的部分进行包装,把它认为是一个分类器classifier。然后对这两个部分统一包装,构成LeNet这个卷积神经网络。
实现:
结果:
在这里我们看到一个问题就是,我们的网络层在上节课当中,是有名字的,例如cov1,cov2.。。我们可以通过命名去索引我们的网络层,在这里Sequential中的网络层是通过序号索引的。如果在上百上千的模型中,很难用序号索引每一个网络层。
下面观察第二种sequential的使用方法。对Sequential输入一个有序的字典。
结果:
这样每个网络层就有自己的命名了。
下面总结一下Sequential,
2. nn.ModuleList
我们通过一个例子,来循环迭代地实现一个20个全连接层的网络。
3. nn.ModuleDict
例:
到此,就学完了三个容器。 总结:
二、下面来观察AlexNet网络模型的构建
下面观察AlexNet的结构:
可以使用sequential的概念。
进入AlexNet,观察:
可以看到确实是使用Sequential实现的。
|
以上是 5.2 模型容器 的全部内容, 来源链接: utcz.com/a/53205.html