解决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 获取文件列表(或是目录例表)
Mar 25 Python
python脚本内运行linux命令的方法
Jul 02 Python
Python+微信接口实现运维报警
Aug 27 Python
Django进阶之CSRF的解决
Aug 01 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
详解Python中的测试工具
Jun 09 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Python如何实现定时器功能
May 28 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
Pygame Rect区域位置的使用(图文)
Nov 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
python基础教程项目三之万能的XML
2018/04/02 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
自我管理的活动方案
2014/08/25 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
会计出纳岗位职责
2015/03/31 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
vue使用echarts实现折线图
2022/03/21 Vue.js
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电