zoukankan      html  css  js  c++  java
  • Pytorch 容器之 nn.Sequential

    nn.Sequential 是一个有序的容器,神经网络模块将按照在传入构造器的顺序依次被添加到计算图中执行,同时以神经网络模块为

    元素的有序字典也可以作为传入参数。

    # Example of using Sequential
    model = nn.Sequential(
                nn.Conv2d(1,20,5),
                nn.ReLU(),
                nn.Conv2d(20,64,5),
                nn.ReLU()
            )
    
    # Example of using Sequential with OrderedDict
    model = nn.Sequential(OrderedDict([
                ('conv1', nn.Conv2d(1,20,5)),
                ('relu1', nn.ReLU()),
                ('conv2', nn.Conv2d(20,64,5)),
                ('relu2', nn.ReLU())
            ]))
    

    下面来看一下它的源码。在初始化函数 __init__ 中,首先是 if 条件判断,如果传入的参数为 1 个,并且类型为 OrderedDict,通过

    字典索引的方式将子模块添加到 self._module 中,否则,通过 for 循环遍历参数,将所有的子模块添加到 self._module 中。

    注意:Sequential 模块的初始换函数没有异常处理,所以在写的时候要注意。

        

    由于每一个神经网络模块都继承于 nn.Module,因此都会实现 __call__ 与 forward 函数,所以 forward 函数中通过 for 循环依次

    调用添加到现有模块中的子模块,最后输出经过所有神经网络层的结果。

        

  • 相关阅读:
    -for循环案例(下)
    for循环案例(上)
    for循环
    判断语句案例
    判断语句
    操作符优先级
    windows 下安装图片标注软件 labelling和出错解决
    tf-faster rcnn
    目标检测——Faster R-CNN 详解、Pytorch搭建、训练自己的数据集
    java idea 配置安装
  • 原文地址:https://www.cnblogs.com/yanghh/p/14213833.html
Copyright © 2011-2022 走看看