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

回到顶部