zoukankan      html  css  js  c++  java
  • nn.mudlelist()说明--未上传

    nn.modulelist()

    如果在构造函数__init__中用到list、tuple、dict等对象时,一定要思考是否应该用ModuleList或ParameterList代替。如果你想设计一个神经网络的层数作为输入传递。

    1. class MyModule(nn.Module): 
    2. def __init__(self): 
    3. super(MyModule, self).__init__() 
    4. self.linears = nn.ModuleList([nn.Linear(10, 10) for i in range(10)]) 
    5.  
    6. def forward(self, x): 
    7. # ModuleList can act as an iterable, or be indexed using ints 
    8. for i, l in enumerate(self.linears): 
    9. x = self.linears[i // 2](x) + l(x) 
    10.  
    11. return x 

    1. extend和append方法

    nn.moduleList定义对象后,有extend和append方法,用法和python中一样,extend是添加另一个modulelist  append是添加另一个module

    2.和普通list的区别

    和普通list不一样,它和torch的其他机制结合紧密,继承了nn.Module的网络模型class可以使用nn.ModuleList并识别其中的parameters,当然这只是个list,不会自动实现forward方法。

    可见,普通list中的子module并不能被主module所识别,而ModuleList中的子module能够被主module所识别。这意味着如果用list保存子module,将无法调整其参数,因其未加入到主module的参数中。

          除ModuleList之外还有ParameterList,其是一个可以包含多个parameter的类list对象。在实际应用中,使用方式与ModuleList类似。

    nn.Sequential定义的网络中各层会按照定义的顺序进行级联,因此需要保证各层的输入和输出之间要衔接。并且nn.Sequential实现了farward()方法,因此可以直接通过类似于x=self.combine(x)的方式实现forward。而nn.ModuleList则没有顺序性要求,并且也没有实现forward()方法。这是二者之间的区别。

  • 相关阅读:
    Nginx Rewrite相关功能-ngx_http_rewrite_module模块指令概述
    Linux操作系统安全-加密和安全扫盲篇
    Nginx安全相关配置-自定义Nginx版本信息
    Nginx高级配置-官网logo之favicon.ico
    Linux操作系统的打包/归档工具介绍
    Nginx高级配置-实现多域名HTTPS
    Nginx高级配置-https功能
    Linux操作系统的压缩、解压缩工具介绍
    Nginx高级配置-压缩功能
    Nginx高级配置-自定义json格式日志
  • 原文地址:https://www.cnblogs.com/miaozhijuan/p/12454189.html
Copyright © 2011-2022 走看看