解决Pytorch中的神坑:关于model.eval的问题

 更新时间:2021年05月22日 10:17:35   作者:汐梦聆海  
这篇文章主要介绍了解决Pytorch中的神坑:关于model.eval的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

有时候使用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之后是否还需要model.train的问题

答案是:需要的

正确的写法是

在这里插入图片描述

for循环之后再开启train,

循环之后的评估model.eval之后就会再次回到model.train

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python Opencv实现图片切割处理

    Python Opencv实现图片切割处理

    这篇文章主要为大家详细介绍了Python Opencv实现图片切割处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • python实现AES加密解密

    python实现AES加密解密

    这篇文章主要为大家详细介绍了python实现AES加密解密的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Python 随机生成中文验证码的实例代码

    Python 随机生成中文验证码的实例代码

    Python 随机生成中文验证码的实例代码,需要的朋友可以参考一下
    2013-03-03
  • 使用Python随机生成数据的方法

    使用Python随机生成数据的方法

    这篇文章主要介绍了使用Python随机生成数据的方法,在日常开发中竟然会遇到需要测试大量数据的地方,那么随机生成数据就可以有效的加快我们的效率,通过Python_Faker生成测试数据需要安装Faker包,需要的朋友可以参考下
    2023-10-10
  • Python查询Mysql时返回字典结构的代码

    Python查询Mysql时返回字典结构的代码

    MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.DictCursor就行
    2012-06-06
  • Python使用OpenCV对彩色图像进行通道分离的项目实践

    Python使用OpenCV对彩色图像进行通道分离的项目实践

    通道分离是将彩色图像的每个像素分解为三个通道(红、绿、蓝)的过程,本文主要介绍了Python使用OpenCV对彩色图像进行通道分离的项目实践,感兴趣的可以了解一下
    2023-08-08
  • windows10在visual studio2019下配置使用openCV4.3.0

    windows10在visual studio2019下配置使用openCV4.3.0

    这篇文章主要介绍了windows10在visual studio2019下配置使用openCV4.3.0,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python库安装速度过慢解决方案

    Python库安装速度过慢解决方案

    这篇文章主要介绍了Python库安装速度过慢解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python可视化Matplotlib折线图plot用法详解

    Python可视化Matplotlib折线图plot用法详解

    这篇文章主要为大家介绍了Python可视化中Matplotlib折线图plot用法的详解,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家多多进步
    2021-09-09
  • Python入门教程(二十三)Python的继承

    Python入门教程(二十三)Python的继承

    这篇文章主要介绍了Python入门教程(二十三)Python的继承,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04

最新评论