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 循环依次

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

        

  • 相关阅读:
    bzoj1081 [SCOI2005]超级格雷码
    bzoj3790 神奇项链
    bzoj2822 [AHOI2012]树屋阶梯
    bzoj1485 [HNOI2009]有趣的数列
    bzoj1486 [HNOI2009]最小圈
    bzoj2721 [Violet 5]樱花
    POJ 1238 Substrings
    ZOJ Team Formation
    POJ 1459 Power Network
    POJ 1458 Common Subsequence
  • 原文地址:https://www.cnblogs.com/yanghh/p/14213833.html
Copyright © 2011-2022 走看看