Module Class,继承于torch.nn.Module
train()函数:train(mode=True),当前self.training=True,所有子模块children,都设置training=True
__init__
,设置self.training参数,子类会使用training参数
Dropout源码,Dropout -> _DropoutNd -> Module、BatchNorm源码,都使用training模式
BN: Buffers are only updated if they are to be tracked and we are in training mode.
super(_DropoutNd, self).__init__()
eval()函数:train(mode=Fale)
requires_grad_()
:当前模型的所有参数,module的函数,和parameter的函数,参数计算梯度
zero_grad()
:调用优化器的zero_grad()
,将所有的参数的梯度都清0,避免梯度累积,优化器设置zero_grad,不需要调用模型
__repr__()
:魔法函数,string的表示,名称+模块描述
__dir__()
:attrs、parameters、modules、buffers、keys,返回所有键值
module.py,Module Class的源码
s = torch.nn.Sequential(torch.nn.Linear(2,3), torch.nn.Linear(3,4))
s._modules
OrderedDict([('0', Linear(in_features=2, out_features=3, bias=True)),
('1', Linear(in_features=3, out_features=4, bias=True))])