容器
1.torch.nn.Module()
add_module(name,module): 将一个child module加入到当前的module,用model.name来获取
children():model.children()来查看所有的子模块
modules():返回所有的模块,与children的区别是也返回当前的模块
eval(): 变成为测试模式,不启用batch normalization 和 dropout
batch normalization在训练时,要计算每个mini-batch的均值和反差,然后归一化x,再进行变化输出;在测试时,没有batch,使用全部训练集的均值和反差
dropout在训练时是为了防止过拟合,以p概率失活神经元;在测试时,使用所有的神经元,但是它们的输出乘以系数1-p
parameters();named_parameters();state_dict()
都用来查看model的参数,但是parameters()是有参数的tensor值,没有参数名
state_dict()不仅仅module有,optimizer也有
2.torch.nn.ModuleList
将submodule保存为一个list
eg: self.linears = nn.ModuleList([nn.Linear(10, 10) for i in range(10) ])
3.torch.nn.sequential()
是一个有序的modules序列
4.torch.nn.conv2d(in_channel,out_channel,kernel_size,stride,padding)
in_channal是输入通道数,如rgb3个通道。对H ,W进行卷积
torch.nn.maxpool2d(kernal_size,stride,padding)
5.non_linear function
torch.nn.Relu()
torch.nn.sigmod()
torch.nn.softmax()
6.model
torch.nn.rnn()
torch.nn.lstm()
torch.nn.linear()
torch.nn.dropout(p)
torch.nn.embedding()