pytorch中Sequential()的三种构造方法

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: pytorch中Sequential()的三种构造方法

对于图像分类任务中,一般神经网络的框架都是卷积、激活、池化,然后不断堆叠,最终嘉善输出层,并不会有较为复杂的连接结构,都是每一层的输出为下一层的输入。

对于简单的前馈神经网络,为了在forward中避免重复的运算操作,可以使用pytorch中内置的Sequential()这个特殊的module,我们可以将重复操作放在Sequential()中,然后模型就会自动识别内部的子module,然后就会按照顺序一层一层进行传播。

方法一

首先创建一个Sequential,然后不断添加模型子层,传入的第一个参数为该层的名称,第二个是该层的实例。

model1 = nn.Sequential()
model1.add_module('conv', nn.Conv2d(1, 5, 2))
model1.add_module('fc', nn.Linear(10, 2))
model1.add_module('sigmoid', nn.Sigmoid())

方法二

对于上面方法进行简化,可以直接将所有实例化的子类按顺序传入,但是这种方法有个缺点,就是不能对每个层进行命名,默认每个层的名称是0,1,2。

model2 = nn.Sequential(nn.Conv2d(1, 5, 2),
                      nn.Linear(10, 2),
                      nn.Sigmoid())

方法三

对于方法三是首先创建一个字典,然后将这个字典传入,这个字典和方法一一致都是层的名称和该层的实例化的键值对。

from collections import OrderedDict
model3 = nn.Sequential(OrderedDict([
    ('conv', nn.Conv2d(1, 5, 2)),
    ('fc', nn.Linear(10, 2)),
    ('sigmoid', nn.Sigmoid())
]))

输出模型结构

我们可以打印模型,查看模型的每层参数

print(model1)
print(model2)
print(model3)
Sequential(
  (conv): Conv2d(1, 5, kernel_size=(2, 2), stride=(1, 1))
  (fc): Linear(in_features=10, out_features=2, bias=True)
  (sigmoid): Sigmoid()
)
Sequential(
  (0): Conv2d(1, 5, kernel_size=(2, 2), stride=(1, 1))
  (1): Linear(in_features=10, out_features=2, bias=True)
  (2): Sigmoid()
)
Sequential(
  (conv): Conv2d(1, 5, kernel_size=(2, 2), stride=(1, 1))
  (fc): Linear(in_features=10, out_features=2, bias=True)
  (sigmoid): Sigmoid()
)

查看指定层

可以查看Sequential中的具体的某一个子模块,对于方法一和方法三都是需要传入层的名称,所以我们可以直接使用名称获得该层,而对于方法二没有名字,所以只可以通过索引获取。

print(model1.conv)
print(model2[0])
print(model3.conv)
Conv2d(1, 5, kernel_size=(2, 2), stride=(1, 1))
Conv2d(1, 5, kernel_size=(2, 2), stride=(1, 1))
Conv2d(1, 5, kernel_size=(2, 2), stride=(1, 1))


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
打赏
0
0
0
0
20
分享
相关文章
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
本文介绍了PyTorch中的BatchNorm2d模块,它用于卷积层后的数据归一化处理,以稳定网络性能,并讨论了其参数如num_features、eps和momentum,以及affine参数对权重和偏置的影响。
413 0
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
这篇博客文章详细介绍了PyTorch中的nn.MaxPool2d()函数,包括其语法格式、参数解释和具体代码示例,旨在指导读者理解和使用这个二维最大池化函数。
242 0
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
Pytorch学习笔记(二):nn.Conv2d()函数详解
这篇文章是关于PyTorch中nn.Conv2d函数的详解,包括其函数语法、参数解释、具体代码示例以及与其他维度卷积函数的区别。
491 0
Pytorch学习笔记(二):nn.Conv2d()函数详解
【Tensorflow+keras】Keras 用Class类封装的模型如何调试call子函数的模型内部变量
该文章介绍了一种调试Keras中自定义Layer类的call方法的方法,通过直接调用call方法并传递输入参数来进行调试。
53 4
【Python-Keras】keras.layers.Dense层的解析与使用
关于Python-Keras库中keras.layers.Dense层的解析与使用。
248 1
Keras 的模型(Model)和层(Layers)的介绍
Keras 的模型(Model)和层(Layers)的介绍
207 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等