解决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 相关文章推荐
有关wxpython pyqt内存占用问题分析
Jun 09 Python
Python中使用ElementTree解析XML示例
Jun 02 Python
python实现数独算法实例
Jun 09 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
python3大文件解压和基本操作
Dec 15 Python
解决python报错MemoryError的问题
Jun 26 Python
windows下python安装小白入门教程
Sep 18 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
Python %r和%s区别代码实例解析
Apr 03 Python
python爬虫selenium模块详解
Mar 30 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/11/24 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
PHP打印输出函数汇总
2016/08/28 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
Angular路由简单学习
2016/12/26 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
python3编写C/S网络程序实例教程
2014/08/25 Python
Python的面向对象思想分析
2015/01/14 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
50道外企软件测试面试题
2014/08/18 面试题
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
商场租赁意向书
2014/07/30 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
稽核岗位职责范本
2015/04/13 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
车辆挂靠协议书
2016/03/23 职场文书
Python图片检索之以图搜图
2021/05/31 Python