Pytorch实践--eval 模式,每次预测相同的数据得到的概率不同

描述:使用pytorch训练好的模型对数据进行预测时,将model设置为eval()模式之后,发现同样的数据每次预测时的概率值会变动。

分析:eval()可以将模型切换为 evaluation 模式,(仅仅当模型中含有Dropout和BatchNorm才起作用)。这里所说的 “模型中含有Dropout和BatchNorm ” 是指 包含在*_modules* 中(当类成员的type派生于Module时,该成员会自动划归为 _modules)。

查看源码发现,在某个成员函数里使用了 nn.Dropout ,但是 不属于 _modules 所以出现每次预测相同的数据出现不同的概率的现象。
Pytorch实践--eval 模式,每次预测相同的数据得到的概率不同_第1张图片
故:使用pytorch的Dropout 或 BN 构建网络时,一定要把该神经网络层放入 _modules 否则不起作用。

你可能感兴趣的:(pytorch)