解决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爬虫代理IP快速增加博客阅读量
Dec 14 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
python 轮询执行某函数的2种方式
May 03 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
什么是Python包的循环导入
Sep 08 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
python Gabor滤波器讲解
Oct 26 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 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 开源AJAX框架14种
2009/08/24 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
优化javascript的执行速度
2010/01/23 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
生成二维码方法汇总
2014/12/26 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
利用Python爬取微博数据生成词云图片实例代码
2017/08/31 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
python 6种方法实现单例模式
2020/12/15 Python
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
思想专业自荐信范文
2013/12/25 职场文书
高一新生军训感言
2014/03/02 职场文书
高中生军训感言
2015/08/01 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript