model的eval方法主要是针对某些在train和predict两个阶段会有不同参数的层。比如Dropout层和BN层

torch为了方便大家,设计这个eval方法就是让我们可以不用手动去针对这些层做predict阶段的处理(也可以叫evaluation阶段,所以这个方法名才是eval)

这也就是说,如果模型中用了dropout或bn,那么predict时必须使用eval 否则结果是没有参考价值的,不存在选择的余地。

使用Pytorch训练模型,一定要注意一个细节

有时候明明训练很好,测试时候出问题?

这时候我们要找一下Model里是否有BN或者 Dropout层,如果存在了,那就要小心了!!!

测试之前加入下面这句话!!!!

# 注意为了排除BN和Dropout对测试影响
model = model.eval()

BN解释看这段话:

对于BN,训练时通常采用mini-batch,所以每一批中的mean和std大致是相同的;而测试阶段往往是单个图像的输入,不存在mini-batch的概念。所以将model改为eval模式后,BN的参数固定,并采用之前训练好的全局的mean和std;

BN在train时每个batch做了不同的归一化因此也对应了不同的参数,相应predict时实际用的参数是每个batch下参数的移动平均。

啥意思?就是使用全局固定的BN

Dropout看这段话:

训练阶段,隐含层神经元先乘概率P,再进行激活;而测试阶段,神经元先激活,每个隐含层神经元的输出再乘概率P,其实就是Dropout在train时随机选择神经元而predict要使用全部神经元并且要乘一个补偿系数

啥意思?

顺序不同!

原文链接:https://blog.csdn.net/qq_15698613/article/details/109388820

pytorch中model.eval()会对哪些函数有影响? - 知乎

【PyTorch】eval() ==>主要是针对某些在train和predict两个阶段会有不同参数的层,比如Dropout层和BN层相关推荐

  1. pytorch eval

    而我这次遇到的情况是,准确率并不是特别低,只掉了几个点,检查了多次,均显示模型参数已经成功加载了.后来仔细查看后发现在其中一次调用模型进行inference时,忘了写 'model.eval()',造 ...

  2. 【深度学习】——利用pytorch搭建一个完整的深度学习项目(构建模型、加载数据集、参数配置、训练、模型保存、预测)

    目录 一.深度学习项目的基本构成 二.实战(猫狗分类) 1.数据集下载 2.dataset.py文件 3.model.py 4.config.py 5.predict.py 一.深度学习项目的基本构成 ...

  3. pytorch 批量归一化BatchNorm1d和BatchNorm2d的用法、BN层参数 running_mean running_var变量计算 验证

    前提知识 BN层包括mean var gamma beta四个参数,.对于图像来说(4,3,2,2),一组特征图,一个通道的特征图对应一组参数,即四个参数均为维度为通道数的一维向量,图中gamma.b ...

  4. 【pytorch】BN层计算

    官方文档 有一个针对BN层的详细的理解: Pytorch的BatchNorm层使用中容易出现的问题 class torch.nn.BatchNorm2d(num_features, eps=1e-05 ...

  5. PyTorch中BN层与CONV层的融合(merge_bn)

    之前发了很久之前写好的一篇关于Caffe中merge_bn的博客,详情可见 Caffe中BN层与CONV层的融合(merge_bn) 今天由于工作需要要对PyTorch模型进行merge_bn,发现网 ...

  6. pytorch实现卷积层和BN层融合

    批归一化 数据的规范化也即(x−mean(x)/var(x))(x-mean(x)/var(x))(x−mean(x)/var(x)) 可以将数据的不同特征规范到均值为0,方差相同的标准正态分布,这就 ...

  7. Pytorch中BN层入门思想及实现

    批归一化层-BN层(Batch Normalization) 作用及影响: 直接作用:对输入BN层的张量进行数值归一化,使其成为均值为零,方差为一的张量. 带来影响: 1.使得网络更加稳定,结果不容易 ...

  8. 深度之眼Pytorch打卡(十三):Pytorch全连接神经网络部件——线性层、非线性激活层与Dropout层(即全连接层、常用激活函数与失活 )

    前言   无论是做分类还是做回归,都主要包括数据.模型.损失函数和优化器四个部分.数据部分在上一篇笔记中已经基本完结,从这篇笔记开始,将学习深度学习模型.全连接网络MLP是最简单.最好理解的神经网络, ...

  9. PyTorch中BN层中新加的 num_batches_tracked 有什么用?

    从PyTorch 0.4.1开始, BN层中新增加了一个参数 track_running_stats, BatchNorm2d(128, eps=1e-05, momentum=0.1, affine ...

最新文章

  1. android怎么搭建人脸库,OpenCV-2.4.6-android-sdk 人脸识别demo搭建
  2. Retrofit2 源码解析之动态代理
  3. pyqt——布局管理
  4. 【零基础学Java】—继承的概述(十九)
  5. java web scala_Springboot与scala编写第一个web程序
  6. Tensorflow官方文档学习理解 (四)-深入MNIST
  7. uiniapp实现微信授权登录
  8. 开发一套企业管理软件系统要花费多少钱?
  9. Flume Kafka Channel使用案例
  10. Python实用模块(二十四)tenacity
  11. HTTP的SSL 证书安装
  12. 光猫、路由器、交换机如何工作的
  13. “大数据杀熟”杀的是你吗?
  14. 寻人风波——解决iphone4s无法接听的问题
  15. 计算机工作表编辑,Excel工作表编辑与管理
  16. LTE:PCFICH资源映射推导总结
  17. 用CDNs和Expires改善网站性能(译文)
  18. 【4399运维笔试题】
  19. 微信小程序导航:免费视频+精品教程+DEMO集合(长期更新)
  20. 实战用法:A表的数据插入到B表,B表存在

热门文章

  1. 微信网站-微信应用-微信二次开发-演示方案
  2. 有传闻说,写好总结可以升职加薪?
  3. RedHat系列软件管理(第二版) --二进制软件包管理
  4. Document API
  5. 互斥锁、死锁、递归锁、信号量、Event
  6. 如何通过StackStorm自动支持2万多台服务器
  7. Red Hat 6.5安装Oracle 10g故障汇总
  8. IE6、IE7、IE8、Firefox通用关闭窗口js
  9. ZZULIOJ 1104: 求因子和(函数专题)
  10. OJ1067: 有问题的里程表(C语言)