2021SC@SDUSC
重点类nn.Module分析
1.nn.Module简介
我们在定义自已的网络的时候,需要继承nn.Module类,并重新实现构造函数__init__构造函数和forward这两个方法。
(1)一般把网络中具有可学习参数的层(如全连接层、卷积层等)放在构造函数__init__()中,当然我也可以吧不具有参数的层也放在里面;
(2)一般把不具有可学习参数的层(如ReLU、dropout、BatchNormanation层)可放在构造函数中,也可不放在构造函数中,如果不放在构造函数__init__里面,则在forward方法里面可以使用nn.functional来代替
(3)forward方法是必须要重写的,它是实现模型的功能,实现各个层之间的连接关系的核心。
2.nn.Module的作用
1.可以提供一些现成的基本模块比如:
Linear、ReLU、Sigmoid、Conv2d、Dropout
2.容器
比如我们经常用到的 nn.Sequential(),顾名思义,将网络模块封装在一个容器中,可以方面网络搭建。
3.参数管理
参数名字可以自动生成(想想如果自己去命名,百万参数的网络没法搭建),然后这些参数都可