解决Pytorch中关于model.eval的问题


Posted in Python onMay 22, 2021

有时候使用Pytorch训练完模型,在测试数据上面得到的结果令人大跌眼镜。

这个时候需要检查一下定义的Model类中有没有 BN 或 Dropout 层,如果有任何一个存在

那么在测试之前需要加入一行代码:

#model是实例化的模型对象
model = model.eval()

表示将模型转变为evaluation(测试)模式,这样就可以排除BN和Dropout对测试的干扰。

因为BN和Dropout在训练和测试时是不同的:

对于BN,训练时通常采用mini-batch,所以每一批中的mean和std大致是相同的;而测试阶段往往是单个图像的输入,不存在mini-batch的概念。所以将model改为eval模式后,BN的参数固定,并采用之前训练好的全局的mean和std;

对于Dropout,训练阶段,隐含层神经元先乘概率P,再进行激活;而测试阶段,神经元先激活,每个隐含层神经元的输出再乘概率P。

如下图所示:

解决Pytorch中关于model.eval的问题

补充:pytorch中model.eval之后是否还需要model.train的问题

答案是:需要的

正确的写法是

解决Pytorch中关于model.eval的问题

for循环之后再开启train,

循环之后的评估model.eval之后就会再次回到model.train

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python操作sqlite的CRUD实例分析
May 08 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
Mar 19 Python
详解python的几种标准输出重定向方式
Aug 15 Python
Python实现常见的回文字符串算法
Nov 14 Python
利用Python复制文件的9种方法总结
Sep 02 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
keras得到每层的系数方式
Jun 15 Python
pytorch SENet实现案例
Jun 24 Python
Python实现七个基本算法的实例代码
Oct 08 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 #Python
对PyTorch中inplace字段的全面理解
May 22 #Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 #Python
用python实现监控视频人数统计
Python基础之进程详解
如何在C++中调用Python
May 21 #Python
python 定义函数 返回值只取其中一个的实现
May 21 #Python
You might like
在PHP中使用curl_init函数的说明
2010/11/02 PHP
PHP的explode和implode的使用说明
2011/07/17 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
js select option对象小结
2013/12/20 Javascript
js登录弹出层特效
2014/03/07 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
教你用Python写安卓游戏外挂
2018/01/11 Python
Python实现简单http服务器
2018/04/12 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
影视动画专业个人的自我评价
2013/12/31 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
后勤部经理岗位职责
2014/02/23 职场文书
商务英语广告词大全
2014/03/18 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
公司租车协议书
2015/01/29 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
600字作文之感受大自然
2019/11/27 职场文书