解决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实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
python实现根据文件格式分类
Oct 31 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
python线程定时器Timer实现原理解析
Nov 30 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
如何搭建pytorch环境的方法步骤
May 06 Python
Python QT组件库qtwidgets的使用
Nov 02 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
通过文字传递创建的图形按钮
2006/10/09 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
php的curl封装类用法实例
2014/11/07 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
js读写(删除)Cookie实例详解
2013/04/17 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
js的Object.assign用法示例分析
2020/03/05 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
python如何写try语句
2020/07/14 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
小学生读书感言
2014/02/12 职场文书
材料会计岗位职责
2014/03/06 职场文书
《长征》教学反思
2014/04/27 职场文书
市场营销战略计划书
2014/05/06 职场文书
支部组织生活会方案
2014/06/10 职场文书
公司股份合作协议书
2014/12/07 职场文书
2015年女生节活动总结
2015/02/27 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
素质拓展训练感想
2015/08/07 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
Nginx缓存设置案例详解
2021/09/15 Servers