解决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版微信红包分配算法
May 04 Python
从Python的源码来解析Python下的freeblock
May 11 Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
Python制作数据导入导出工具
Jul 31 Python
python中time库的实例使用方法
Oct 31 Python
Python with标签使用方法解析
Jan 17 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
Python 操作 MySQL数据库
Sep 18 Python
python实现二分查找算法
Sep 18 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
python游戏开发之pygame实现接球小游戏
Apr 22 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 获取可变函数参数的函数
2009/08/26 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python图算法实例分析
2016/08/13 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
Python通过format函数格式化显示值
2020/10/17 Python
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
会计毕业生自荐信
2013/11/21 职场文书
《太阳》教学反思
2014/02/21 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
政风行风建设责任书
2014/07/23 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
保险公司演讲稿
2014/09/02 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
导游词300字
2015/02/13 职场文书
内勤岗位职责范本
2015/04/13 职场文书
初中政治教师教学反思
2016/02/23 职场文书
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
进行数据处理的6个 Python 代码块分享
2022/04/06 Python