1 nn.ModuleList原理

nn.ModuleList,它是一个储存不同 module,并自动将每个 module 的 parameters 添加到网络之中的容器。

你可以把任意 nn.Module 的子类 (比如 nn.Conv2d, nn.Linear 之类的) 加到这个 list 里面,方法和 Python 自带的 list 一样,无非是 extend,append 等操作。

但不同于一般的 list,加入到 nn.ModuleList 里面的 module 是会自动注册到整个网络上的,同时 module 的 parameters 也会自动添加到整个网络中。

若使用python的list,则会出问题。

import torch
class net_mod_lst(torch.nn.Module):def __init__(self):super(net_mod_lst,self).__init__()self.modlst=torch.nn.ModuleList([torch.nn.Conv2d(1,20,5),torch.nn.ReLU(),torch.nn.Conv2d(20,64,5)])def forward(self,x):for m in self.modlst:x=m(x)return xnet_mod=net_mod_lst()
print(net_mod)
'''
net_mod_lst((modlst): ModuleList((0): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))(1): ReLU()(2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1)))
)'''

2 nn.Sequential与nn.ModuleList的区别

2.1 不同点1

nn.Sequential内部实现了forward函数,因此可以不用写forward函数。而nn.ModuleList则没有实现内部forward函数。

但如果Sequential是在继承了nn.Module的类中的话,那也要forward函数了

import torch
class net_mod_lst(torch.nn.Module):def __init__(self):super(net_mod_lst,self).__init__()self.seq=torch.nn.Sequential(torch.nn.Conv2d(1,20,5),torch.nn.ReLU(),torch.nn.Conv2d(20,64,5))def forward(self,x):x=self.seq(x)return xnet_mod=net_mod_lst()
print(net_mod)
'''
net_mod_lst((seq): Sequential((0): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))(1): ReLU()(2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1)))
)
'''

2.2 不同点2

nn.Sequential可以使用OrderedDict对每层进行命名

见pytorch 学习笔记:nn.Sequential构造神经网络_刘文巾的博客-CSDN博客

2.3 不同点3

nn.Sequential里面的模块按照顺序进行排列的,所以必须确保前一个模块的输出大小和下一个模块的输入大小是一致的。

而nn.ModuleList 并没有定义一个网络,它只是将不同的模块储存在一起,这些模块之间并没有什么先后顺序可言。

pytorch学习笔记 torchnn.ModuleList相关推荐

  1. pytorch 学习笔记目录

    1 部分内容 pytorch笔记 pytorch模型中的parameter与buffer_刘文巾的博客-CSDN博客 pytorch学习笔记 torchnn.ModuleList_刘文巾的博客-CSD ...

  2. PyTorch学习笔记(五):模型定义、修改、保存

    往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一):PyTorch环境安 ...

  3. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  4. pytorch学习笔记(二):gradien

    pytorch学习笔记(二):gradient 2017年01月21日 11:15:45 阅读数:17030

  5. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  6. 深度学习入门之PyTorch学习笔记:卷积神经网络

    深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 4 卷积神经网络 4.1 主要任务及起源 4.2 卷积神经网络的原理和结构 4.2.1 卷积层 1. ...

  7. 深度学习入门之PyTorch学习笔记:多层全连接网络

    深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 3.1 PyTorch基础 3.2 线性模型 3.2.1 问题介绍 3.2.2 一维线性回归 3.2 ...

  8. 深度学习入门之PyTorch学习笔记:深度学习框架

    深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 2.1 深度学习框架介绍 2.1.1 TensorFlow 2.1.2 Caffe 2.1.3 Theano 2.1.4 ...

  9. 深度学习入门之PyTorch学习笔记:深度学习介绍

    深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...

最新文章

  1. JavaScript中的面向对象程序设计
  2. php 图片合成,PHP中多张图片合成一张图片例子
  3. Jsoup获取所有链接
  4. Linux笔记-iptables规则原理和组成
  5. C语言 读取文件中特定数据
  6. LinkedList简要分析
  7. 多媒体计算机技术特性,多媒体计算机技术东师20春在线作业2资料
  8. level set method 水平集方法基本问题
  9. firefox无法显示flash问题解决
  10. 读胡适先生《赠与今年的大学毕业生》和《赠与大学毕业生的话》后感
  11. 电商、数字化下的中国书店
  12. android 雪球红包脚本,利用adb shell和node.js实现抖音自动抢红包功能(推荐)
  13. 防范WiFi探针嗅探敏感数据的保护方法
  14. 设计并编写代码自动格斗类游戏
  15. spoolsv - spoolsv.exe - 进程信息
  16. GBase 8a的SNMP Trap 告警
  17. 低空急流负风切变对风机的影响
  18. 【c语言】组件化打包—静态库lib
  19. 等保windows server安全策略三权分立设置
  20. 4.3.4 处理心跳结果的示例

热门文章

  1. Linux下的Nano命令
  2. VC++ 实现文件与应用程序关联
  3. FTP linux-500 OOPS问题解决 (转载)
  4. hdu 4309(最大流+枚举状态)
  5. 有些话不知道怎么说才好
  6. 用Visual Studio .Net 2003开发PHP程序
  7. 如何解决Http请求参数中加号变空格问题
  8. 把9999的各个2进制位置上的1的 值打印出来? 如何实现? 1的数量 二机制位 x(x-1)
  9. 明日科技的python书籍怎么样_零基础学习Python不可错过的5本书籍
  10. python读取单元格的值csv,比较单元格值的csv文件python