解决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 相关文章推荐
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
浅谈Python数据类型之间的转换
Jun 08 Python
python实现朴素贝叶斯算法
Nov 19 Python
解决python中无法自动补全代码的问题
Dec 04 Python
详解用Python实现自动化监控远程服务器
May 18 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
用python计算文件的MD5值
Dec 23 Python
pandas提升计算效率的一些方法汇总
May 30 Python
Python实现归一化算法详情
Mar 18 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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/06/05 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python如何为图片添加水印
2016/11/25 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python pygame模块编写飞机大战
2018/11/20 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
python super函数使用方法详解
2020/02/14 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
英格兰足协官方商店:England Store
2019/07/12 全球购物
C#面试问题
2016/07/29 面试题
大学四年学习的自我评价分享
2013/12/09 职场文书
给领导的检讨书
2014/02/16 职场文书
离婚协议书格式
2015/01/26 职场文书
毕业生个人总结
2015/02/28 职场文书
大二学年个人总结
2015/03/03 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
python随机打印成绩排名表
2021/06/23 Python
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS