在训练模型时会在前面加上:
net.train()
在测试模型时在前面使用:
net.eval()
同时发现,若是不写这两个程序也能够运行,这是由于这两个方法是针对在网络训练和测试时采用不一样方式的状况,好比Batch Normalization 和 Dropout。网络
训练时是正对每一个min-batch的,可是在测试中每每是针对单张图片,即不存在min-batch的概念。因为网络训练完毕后参数都是固定的,所以每一个批次的均值和方差都是不变的,所以直接结算全部batch的均值和方差。全部Batch Normalization的训练和测试时的操做不一样
在训练中,每一个隐层的神经元先乘几率P,而后在进行激活,在测试中,全部的神经元先进行激活,而后每一个隐层神经元的输出乘P。
参考:
https://www.jb51.net/article/212962.htm
https://www.shangmayuan.com/a/e3c4302796b746179926723a.html