解决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编程中的字符串
Oct 14 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
python list是否包含另一个list所有元素的实例
May 04 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python 插入日期数据到Oracle实例
Mar 02 Python
Python matplotlib实时画图案例
Apr 23 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
如何用python免费看美剧
Aug 11 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调用mysql存储过程
2007/02/14 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
php模板函数 正则实现代码
2012/10/15 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
PHP文件操作方法汇总
2015/07/01 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
python中函数默认值使用注意点详解
2016/06/01 Python
python实现下载文件的三种方法
2017/02/09 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
初二政治教学反思
2014/01/12 职场文书
高一家长会邀请函
2014/01/12 职场文书
大学生应聘求职信
2014/05/26 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js