【PyTorch】eval() ==>主要是针对某些在train和predict两个阶段会有不同参数的层,比如Dropout层和BN层
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层相关推荐
- pytorch eval
而我这次遇到的情况是,准确率并不是特别低,只掉了几个点,检查了多次,均显示模型参数已经成功加载了.后来仔细查看后发现在其中一次调用模型进行inference时,忘了写 'model.eval()',造 ...
- 【深度学习】——利用pytorch搭建一个完整的深度学习项目(构建模型、加载数据集、参数配置、训练、模型保存、预测)
目录 一.深度学习项目的基本构成 二.实战(猫狗分类) 1.数据集下载 2.dataset.py文件 3.model.py 4.config.py 5.predict.py 一.深度学习项目的基本构成 ...
- pytorch 批量归一化BatchNorm1d和BatchNorm2d的用法、BN层参数 running_mean running_var变量计算 验证
前提知识 BN层包括mean var gamma beta四个参数,.对于图像来说(4,3,2,2),一组特征图,一个通道的特征图对应一组参数,即四个参数均为维度为通道数的一维向量,图中gamma.b ...
- 【pytorch】BN层计算
官方文档 有一个针对BN层的详细的理解: Pytorch的BatchNorm层使用中容易出现的问题 class torch.nn.BatchNorm2d(num_features, eps=1e-05 ...
- PyTorch中BN层与CONV层的融合(merge_bn)
之前发了很久之前写好的一篇关于Caffe中merge_bn的博客,详情可见 Caffe中BN层与CONV层的融合(merge_bn) 今天由于工作需要要对PyTorch模型进行merge_bn,发现网 ...
- pytorch实现卷积层和BN层融合
批归一化 数据的规范化也即(x−mean(x)/var(x))(x-mean(x)/var(x))(x−mean(x)/var(x)) 可以将数据的不同特征规范到均值为0,方差相同的标准正态分布,这就 ...
- Pytorch中BN层入门思想及实现
批归一化层-BN层(Batch Normalization) 作用及影响: 直接作用:对输入BN层的张量进行数值归一化,使其成为均值为零,方差为一的张量. 带来影响: 1.使得网络更加稳定,结果不容易 ...
- 深度之眼Pytorch打卡(十三):Pytorch全连接神经网络部件——线性层、非线性激活层与Dropout层(即全连接层、常用激活函数与失活 )
前言 无论是做分类还是做回归,都主要包括数据.模型.损失函数和优化器四个部分.数据部分在上一篇笔记中已经基本完结,从这篇笔记开始,将学习深度学习模型.全连接网络MLP是最简单.最好理解的神经网络, ...
- PyTorch中BN层中新加的 num_batches_tracked 有什么用?
从PyTorch 0.4.1开始, BN层中新增加了一个参数 track_running_stats, BatchNorm2d(128, eps=1e-05, momentum=0.1, affine ...
最新文章
- android怎么搭建人脸库,OpenCV-2.4.6-android-sdk 人脸识别demo搭建
- Retrofit2 源码解析之动态代理
- pyqt——布局管理
- 【零基础学Java】—继承的概述(十九)
- java web scala_Springboot与scala编写第一个web程序
- Tensorflow官方文档学习理解 (四)-深入MNIST
- uiniapp实现微信授权登录
- 开发一套企业管理软件系统要花费多少钱?
- Flume Kafka Channel使用案例
- Python实用模块(二十四)tenacity
- HTTP的SSL 证书安装
- 光猫、路由器、交换机如何工作的
- “大数据杀熟”杀的是你吗?
- 寻人风波——解决iphone4s无法接听的问题
- 计算机工作表编辑,Excel工作表编辑与管理
- LTE:PCFICH资源映射推导总结
- 用CDNs和Expires改善网站性能(译文)
- 【4399运维笔试题】
- 微信小程序导航:免费视频+精品教程+DEMO集合(长期更新)
- 实战用法:A表的数据插入到B表,B表存在