Pytorch学习笔记11-构建模型的3种方法
由于时效问题,该文某些代码、技术可能已经过期,请注意!!!本文最后更新于:3 年前
如题
可以使用以下3种方式构建模型:
1,继承nn.Module基类构建自定义模型。
2,使用nn.Sequential按层顺序构建模型。
3,继承nn.Module基类构建模型并辅助应用模型容器进行封装(nn.Sequential,nn.ModuleList,nn.ModuleDict)。
其中 第1种方式最为常见,第2种方式最简单,第3种方式最为灵活也较为复杂。
推荐使用第1种方式构建模型。
一,继承nn.Module基类构建自定义模型
以下是继承nn.Module基类构建自定义模型的一个范例。模型中的用到的层一般在__init__函数中定义,然后在forward方法中定义模型的正向传播逻辑。
1 |
|
二,使用nn.Sequential按层顺序构建模型
使用nn.Sequential按层顺序构建模型无需定义forward方法。仅仅适合于简单的模型。
以下是使用nn.Sequential搭建模型的一些等价方法。
1,利用add_module方法
1 |
|
2,利用变长参数
这种方式构建时不能给每个层指定名称。
1 |
|
3,利用OrderedDict
1 |
|
三,继承nn.Module基类构建模型并辅助应用模型容器进行封装
当模型的结构比较复杂时,我们可以应用模型容器(nn.Sequential,nn.ModuleList,nn.ModuleDict)对模型的部分结构进行封装。
这样做会让模型整体更加有层次感,有时候也能减少代码量。
注意,在下面的范例中我们每次仅仅使用一种模型容器,但实际上这些模型容器的使用是非常灵活的,可以在一个模型中任意组合任意嵌套使用。
1,nn.Sequential作为模型容器
1 |
|
2,nn.ModuleList作为模型容器
注意下面中的ModuleList不能用Python中的列表代替。
1 |
|
3,nn.ModuleDict作为模型容器
注意下面中的ModuleDict不能用Python中的字典代替。
1 |
|
搬运自:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!