Pytorch-----torch.nn.Module.modules()

这篇具有很好参考价值的文章主要介绍了Pytorch-----torch.nn.Module.modules()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在使用pytorch构建神经网络时,定义的网络模型必须要继承自torch.nn.Module这一父类。在Module类中,有一个函数可以返回网络中所有模块的迭代器。这就是torch.nn.Module.modules()


提示:以下是本篇文章正文内容,下面案例可供参考

一、torch.nn.Module.modules()

源码中的解释如下:

    def modules(self) -> Iterator['Module']:
        r"""Returns an iterator over all modules in the network.

        Yields:
            Module: a module in the network

        Note:
            Duplicate modules are returned only once. In the following
            example, ``l`` will be returned only once.

        Example::

            >>> l = nn.Linear(2, 2)
            >>> net = nn.Sequential(l, l)
            >>> for idx, m in enumerate(net.modules()):
                    print(idx, '->', m)

            0 -> Sequential(
              (0): Linear(in_features=2, out_features=2, bias=True)
              (1): Linear(in_features=2, out_features=2, bias=True)
            )
            1 -> Linear(in_features=2, out_features=2, bias=True)

        """
        for _, module in self.named_modules():
            yield module

不只是返回网络中的某一层,而是所有模块和每一层,例如,在下面的代码中,我首先定义了VGG16的网络结构,然后打印出VGG16的modules()
结果如下:

E:\study\python\anaconda\envs\graduate_project\python.exe E:/study/project/compute_vision/VGG/model.py
0 -> VGG16(
  (features): Sequential(
    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU()
    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU()
    (4): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
    (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (6): ReLU()
    (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (8): ReLU()
    (9): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
    (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (11): ReLU()
    (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (13): ReLU()
    (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (15): ReLU()
    (16): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
    (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (18): ReLU()
    (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (20): ReLU()
    (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (22): ReLU()
    (23): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
    (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (25): ReLU()
    (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (27): ReLU()
    (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (29): ReLU()
    (30): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (classifier): Sequential(
    (0): Dropout(p=0.5, inplace=False)
    (1): Linear(in_features=25088, out_features=4096, bias=True)
    (2): Dropout(p=0.5, inplace=False)
    (3): Linear(in_features=4096, out_features=4096, bias=True)
    (4): Linear(in_features=4096, out_features=1000, bias=True)
  )
)
1 -> Sequential(
  (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (1): ReLU()
  (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (3): ReLU()
  (4): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
  (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (6): ReLU()
  (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (8): ReLU()
  (9): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
  (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (11): ReLU()
  (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (13): ReLU()
  (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (15): ReLU()
  (16): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
  (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (18): ReLU()
  (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (20): ReLU()
  (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (22): ReLU()
  (23): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
  (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (25): ReLU()
  (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (27): ReLU()
  (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (29): ReLU()
  (30): MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
)
2 -> Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
3 -> ReLU()
4 -> Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
5 -> ReLU()
6 -> MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
7 -> Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
8 -> ReLU()
9 -> Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
10 -> ReLU()
11 -> MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
12 -> Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
13 -> ReLU()
14 -> Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
15 -> ReLU()
16 -> Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
17 -> ReLU()
18 -> MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
19 -> Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
20 -> ReLU()
21 -> Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
22 -> ReLU()
23 -> Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
24 -> ReLU()
25 -> MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
26 -> Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
27 -> ReLU()
28 -> Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
29 -> ReLU()
30 -> Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
31 -> ReLU()
32 -> MaxPool2d(kernel_size=(2, 2), stride=2, padding=0, dilation=1, ceil_mode=False)
33 -> Sequential(
  (0): Dropout(p=0.5, inplace=False)
  (1): Linear(in_features=25088, out_features=4096, bias=True)
  (2): Dropout(p=0.5, inplace=False)
  (3): Linear(in_features=4096, out_features=4096, bias=True)
  (4): Linear(in_features=4096, out_features=1000, bias=True)
)
34 -> Dropout(p=0.5, inplace=False)
35 -> Linear(in_features=25088, out_features=4096, bias=True)
36 -> Dropout(p=0.5, inplace=False)
37 -> Linear(in_features=4096, out_features=4096, bias=True)
38 -> Linear(in_features=4096, out_features=1000, bias=True)

Process finished with exit code 0

序号0:整个VGG16模块,包括特征提取模块和分类模块
序号1:特征提取模块
序号2-32:特征提取模块的每一层
序号33:分类模块
序号34-38:分类模块的每一层文章来源地址https://www.toymoban.com/news/detail-632877.html

到了这里,关于Pytorch-----torch.nn.Module.modules()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [PyTorch][chapter 39][nn.Module]

    前言:           pytorch.nn是专门为神经网络设计的模块化接口. nn构建于autograd之上,可以用来定义和运行神经网络.是所有类的父类.          目录:     基本结构     常用模块    container(容器)     CPU,GPU 部署     train-test 环境切换     flatten     MyLinear      一 基本结

    2024年02月08日
    浏览(29)
  • PyTorch中的nn.LeakyReLU()、nn.Module和nn.ModuleList

      在 PyTorch 中, nn.LeakyReLU() 是一个激活函数,用于引入非线性性到神经网络中。Leaky ReLU 是修正线性单元(ReLU)的一种变体,它在输入为负数时不是完全置零,而是引入一个小的负斜率。 nn.LeakyReLU() 的初始化参数如下: negative_slope (默认为 0.01 ):负斜率,指定当输入为

    2024年01月18日
    浏览(34)
  • pytorch(6)——神经网络基本骨架nn.module的使用

    torch.nn(Neural network, 神经网络)内包含Pytorch神经网络框架 Containers: 容器 Convolution Layers: 卷积层 Pooling Layers: 池化层 Padding Layers: 填充层 Non-linear Activations (weighted sum, nonlinearity):非线性激活 Non-linear Activations (other):非线性激活 Normalization Layers:归一化层 Recurrent Layers:递归层 Tr

    2024年02月14日
    浏览(29)
  • PyTorch三种主流模型构建方式:nn.Sequential、nn.Module子类、nn.Module容器开发实践,以真实烟雾识别场景数据为例

    Keras和PyTorch是两个常用的深度学习框架,它们都提供了用于构建和训练神经网络的高级API。 Keras: Keras是一个高级神经网络API,可以在多个底层深度学习框架上运行,如TensorFlow和CNTK。以下是Keras的特点和优点: 优点: 简单易用:Keras具有简洁的API设计,易于上手和使用,适合

    2024年02月11日
    浏览(74)
  • 学习pytorch7 神经网络的基本骨架--nn,module的使用

    B站小土堆视频学习笔记 https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module https://www.php.cn/faq/555151.html 前向传播 与之对应的还有反向传播 推荐课程 吴恩达卷积 李宏毅深度学习 cnn 同济子豪兄神经网络 code–Generate–override Methods–init 重写init方法 torch.tensor和torch.Tens

    2024年02月09日
    浏览(23)
  • Pytorch出现错误Attribute Error: module ‘torch‘ has no attribute ‘_six‘

    1. 问题描述 :我是在VScode中使用jupyter拓展,远程连接服务器。 2. torch版本 :2.0 3. pytorch版本 : 1.9.1 4. 问题原因 :torch 2.0版本 以后中没有 ‘_six.py’ 文件 5. 如何查看torch中的py文件? 我是用的anaconda,torch中的py文件位置为: 6. 解决办法 (1)我第一开始试着把torch1.9中的’

    2024年02月11日
    浏览(28)
  • 解决pytorch明明已经安装好了但是import时报错ModuleNotFoundError: No module named ‘torch‘

    按照b站一些up主的方法来安装,结果运行时却告诉我:报错ModuleNotFoundError: No module named ‘torch‘ 可是我明明已经装了torch 安装教程参考的是(https://www.bilibili.com/video/BV1o3411V7Zz/?spm_id_from=333.880.my_history.page.clickvd_source=ad813e1004be679f01f964a5bda10dd8) 后来看了一些人的经验,总算没再有

    2024年02月05日
    浏览(39)
  • AttributeError: module ‘torch.nn‘ has no attribute ‘module‘

    如上,调用时报错: init () takes 1 positional argument but 2 were given 纠错发现是少打了下划线 init前后有两个_,

    2024年02月16日
    浏览(29)
  • PyTorch AttributeError: module ‘torch._C‘ has no attribute ‘_cuda_setDevice‘

    这个问题说简单也很简单,大概率是你的pytorch安装了cpu版本...但现在默认安装下来就是cpu版本,可以在python中输入下面两行测试以下是不是不可用,如果显示False,那么就是不可用。 然后可以conda list看一下pytorch的版本,如果是cpu的版本,那么可以参考另一个写的很详细的博

    2024年02月13日
    浏览(30)
  • 【YOLOv7-环境搭建】PyTorch安装后输出版本显示No module named ‘Torch’的解决方法

    可能一:P yCharm环境导入错误    配置的解释器,必须为所创建的虚拟环境下的python.exe文件,别的路径下的python.exe文件不好使!! 解决方法:根据【YOLOv7-环境搭建③】PyCharm安装和环境、解释器配置文中配置解释器的步骤进行检查与更正 可能二:缺少Torch包    既然显示没有

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包