解决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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
python处理二进制数据的方法
Jun 03 Python
Python编程中的文件操作攻略
Oct 16 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
三步实现Django Paginator分页的方法
Jun 11 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
python简单实现最大似然估计&scipy库的使用详解
Apr 15 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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/08/05 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
php图像处理类实例
2015/07/28 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
常用jQuery代码分享
2015/07/14 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
JS常用算法实现代码
2016/11/14 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
初步理解Python进程的信号通讯
2015/04/09 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
python如何删除文件中重复的字段
2019/07/16 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
慈善晚会策划方案
2014/05/14 职场文书
十佳少年事迹材料
2014/12/25 职场文书
英文慰问信
2015/02/14 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
你知道Java Spring的两种事务吗
2022/03/16 Java/Android