欢迎光临散文网 会员登陆 & 注册

nn.Sequential 、 nn.ModuleList 、 nn.ModuleDict 的使用 与 区别

2023-08-11 22:11 作者:Enzo_Mi  | 我要投稿

1、nn.Sequentialnn.ModuleListnn.ModuleDict 类都继承自 Module 类。


2、nn.Sequential、nn.ModuleListnn.ModuleDict语法


3、SequentialModuleDictModuleList 的区别

  1)ModuleList 仅仅是一个储存各种模块的列表,这些模块之间没有联系也没有顺序(所以不用保证相邻层的输入输出维度匹配),而且没有实现 forward 功能需要自己实现

  2)和 ModuleList 一样, ModuleDict 实例仅仅是存放了一些模块的字典,并没有定义 forward 函数需要自己定义

  3)而 Sequential 内的模块需要按照顺序排列,要保证相邻层的输入输出大小相匹配,内部 forward 功能已经实现,所以,直接如下写模型,是可以直接调用的,不再需要写forward,sequential 内部已经有 forward

    为 nn.ModuleList 写 forward 函数

为 nn.ModuleDict 写 forward 函数

将 nn.ModuleList 转换成 nn.Sequential

将 nn.ModuleDict 转换成 nn.Sequential



4、ModuleDictModuleList 的区别

  1)ModuleDict 可以给每个层定义名字,ModuleList 不会

  2)ModuleList 可以通过索引读取,并且使用 append 添加元素

  3)ModuleDict 可以通过 key 读取,并且可以像 字典一样添加元素



5、nn.ModuleList 、 nn.ModuleDict 与 Python  list、Dict 的区别

加入到 ModuleList 、ModuleDict  里面的所有模块的参数会被自动添加到整个网络中。






nn.Sequential 、 nn.ModuleList 、 nn.ModuleDict 的使用 与 区别的评论 (共 条)

分享到微博请遵守国家法律