解决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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
Python对数据库操作
Mar 28 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
全面了解python中的类,对象,方法,属性
Sep 11 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
Django密码系统实现过程详解
Jul 19 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
php实现ping
2006/10/09 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
smarty表格换行实例
2014/12/15 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
tagName的使用,留一笔
2006/06/26 Javascript
javascript打印输出json实例
2013/11/11 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
python中的函数用法入门教程
2014/09/02 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
优秀毕业生推荐信
2013/11/02 职场文书
社区安全检查制度
2014/02/03 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
营销计划书
2015/01/17 职场文书
滴水洞导游词
2015/02/10 职场文书