解决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中无限元素列表的实现方法
Aug 18 Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
Python列表切片用法示例
Apr 19 Python
Golang与python线程详解及简单实例
Apr 27 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
python三方库之requests的快速上手
Mar 04 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
python命名空间(namespace)简单介绍
Aug 10 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
python实现猜单词游戏
May 22 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 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的图形函数中显示汉字
2006/10/09 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
微信小程序如何获取用户收货地址
2018/11/27 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
Python的Django框架中的表单处理示例
2015/07/17 Python
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
美国著名手表网站:Timepiece
2017/11/15 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
经济贸易专业自荐信
2014/06/11 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
南极大冒险观后感
2015/06/05 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
六年级作文之关于梦
2019/10/22 职场文书
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技
win10搭建配置ftp服务器的方法
2022/08/05 Servers