PyTorch dropout设置训练和测试模式的实现


Posted in Python onMay 27, 2021

看代码吧~

class Net(nn.Module):
…
model = Net()
…
model.train() # 把module设成训练模式,对Dropout和BatchNorm有影响
model.eval() # 把module设置为预测模式,对Dropout和BatchNorm模块有影响

补充:Pytorch遇到的坑——训练模式和测试模式切换

由于训练的时候Dropout和BN层起作用,每个batch BN层的参数不一样,dropout在训练时随机失效点具有随机性,所以训练和测试要区分开来。

使用时切记要根据实际情况切换:

model.train()
model.eval()

补充:Pytorch在测试与训练过程中的验证结果不一致问题

引言

今天在使用Pytorch导入此前保存的模型进行测试,在过程中发现输出的结果与验证结果差距甚大,经过排查后发现是forward与eval()顺序问题。

现象

此前的错误代码是

input_cpu = torch.ones((1, 2, 160, 160))
    target_cpu =torch.ones((1, 2, 160, 160))
    target_gpu, input_gpu = target_cpu.cuda(), input_cpu.cuda()
    model.set_input_2(input_gpu, target_gpu)
    model.eval()
    model.forward()

应该改为

input_cpu = torch.ones((1, 2, 160, 160))
    target_cpu =torch.ones((1, 2, 160, 160))
    target_gpu, input_gpu = target_cpu.cuda(), input_cpu.cuda()
    model.set_input_2(input_gpu, target_gpu)
    # 先forward再eval
    model.forward()
    model.eval()

当时有个疑虑,为什么要在forward后面再加eval(),查了下相关资料,主要是在BN层以及Dropout的问题。当使用eval()时,模型会自动固定BN层以及Dropout,选取训练好的值,否则则会取平均,可能导致生成的图片颜色失真。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
python中enumerate的用法实例解析
Aug 18 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Python排序算法实例代码
Aug 10 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
微信公众号token验证失败解决方案
Jul 22 Python
pytorch 共享参数的示例
Aug 17 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
python实现层次聚类的方法
Nov 01 Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
PyTorch 实现L2正则化以及Dropout的操作
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
You might like
建立文件交换功能的脚本(一)
2006/10/09 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
Python3数字求和的实例
2019/02/19 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
物业管理大学生个人的自我评价
2013/10/10 职场文书
安全承诺书范文
2014/03/26 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
关于迟到的检讨书
2015/05/06 职场文书
开国大典观后感
2015/06/04 职场文书
详解Python描述符的工作原理
2021/06/11 Python
python ansible自动化运维工具执行流程
2021/06/24 Python
python识别围棋定位棋盘位置
2021/07/26 Python
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js
golang使用map实现去除重复数组
2022/04/14 Golang