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

本文探讨了在使用PyTorch训练模型并进行预测时遇到的问题:即使设置了eval()模式,相同的输入数据仍会产生不同的预测概率。文章深入分析了原因,并强调了正确使用Dropout和BatchNorm层的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值