pytorch net.train(), net.eval()

在训练模型时会在前面加上:

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容