解决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中的下划线详解
Jun 24 Python
Python教程之全局变量用法
Jun 27 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python递归法解决棋盘分割问题
Jul 17 Python
Python二元赋值实用技巧解析
Oct 25 Python
Python with语句和过程抽取思想
Dec 23 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
May 28 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 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
php4的session功能评述(一)
2006/10/09 PHP
利用static实现表格的颜色隔行显示
2006/10/09 PHP
php简单提示框alert封装函数
2010/08/08 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
JQuery基础语法小结
2015/02/27 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
Python下载指定页面上图片的方法
2016/05/12 Python
解决python "No module named pip" 的问题
2018/10/13 Python
python装饰器练习题及答案
2019/11/01 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
python dict乱码如何解决
2020/06/07 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
初中学生期末评语
2014/04/24 职场文书
公司委托书范本5篇
2014/09/20 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS