torch.nn.functional中有很多功能,后续会常用的。那什么时候使用nn.Module,什么时候使用nn.functional呢?一般情况下,如果模型有可学习的参数,最好用nn.Module,其他情况nn.functional相对更简单一些
nn.functional适合做测试,不适合做实际代码模块的构建。
import torch.nn.functional as F
loss_func = F.cross_entropy
def model(xb):
return xb.mm(weights) + bias
nn.functional里面有损失函数。
batchsize一次要训练样本的个数,越大越好。
w做随机初始化,因为b的影响比较小,所以b一般都用常数初始化。
基本上每一个全连接层都需要dropout。
-
一般在训练模型时加上model.train(),这样会正常使用Batch Normalization和 Dropout
-
测试的时候一般选择model.eval(),这样就不会使用Batch Normalization和 Dropout
-
torch.max(input, dim) 函数:
input是softmax函数输出的一个tensor
dim是max函数索引的维度0/1,0是每列的最大值,1是每行的最大值
-占位符 函数输出不需要某一维度的数据时,可以用占位符接收数据
pandas有一个函数:get_dummies函数可以将特征自动转换为独热编码
对数据进行归一化,神经网络认为数值大的特征就更重要,但是有些数值本身就很大,比如年份,这样的情况下会影响后续模型学习情况,因此先对数据进行预处理,使其取值范围更为集中。