pytorch 实现在测试的时候启用dropout


Posted in Python onMay 27, 2021

我们知道,dropout一般都在训练的时候使用,那么测试的时候如何也开启dropout呢?

在pytorch中,网络有train和eval两种模式,在train模式下,dropout和batch normalization会生效,而val模式下,dropout不生效,bn固定参数。

想要在测试的时候使用dropout,可以把dropout单独设为train模式,这里可以使用apply函数:

def apply_dropout(m):
    if type(m) == nn.Dropout:
        m.train()

下面是完整demo代码:

# coding: utf-8
import torch
import torch.nn as nn
import numpy as np
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc = nn.Linear(8, 8)
        self.dropout = nn.Dropout(0.5)
    def forward(self, x):
        x = self.fc(x)
        x = self.dropout(x)
        return x
net = SimpleNet()
x = torch.FloatTensor([1]*8)
net.train()
y = net(x)
print('train mode result: ', y)
net.eval()
y = net(x)
print('eval mode result: ', y)
net.eval()
y = net(x)
print('eval2 mode result: ', y)
def apply_dropout(m):
    if type(m) == nn.Dropout:
        m.train()
net.eval()
net.apply(apply_dropout)
y = net(x)
print('apply eval result:', y)

运行结果:

pytorch 实现在测试的时候启用dropout

可以看到,在eval模式下,由于dropout未生效,每次跑的结果不同,利用apply函数,将Dropout单独设为train模式,dropout就生效了。

补充:Pytorch之dropout避免过拟合测试

一.做数据

pytorch 实现在测试的时候启用dropout

pytorch 实现在测试的时候启用dropout

二.搭建神经网络

pytorch 实现在测试的时候启用dropout

pytorch 实现在测试的时候启用dropout

三.训练

pytorch 实现在测试的时候启用dropout

四.对比测试结果

注意:测试过程中,一定要注意模式切换

pytorch 实现在测试的时候启用dropout

pytorch 实现在测试的时候启用dropout

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

Python 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
Python中的二叉树查找算法模块使用指南
Jul 04 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
python中rc1什么意思
Jun 19 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
python爬取网页版QQ空间,生成各类图表
Jun 02 Python
基于PyQt5制作一个群发邮件工具
Apr 08 Python
使用Python脚本对GiteePages进行一键部署的使用说明
教你使用Python pypinyin库实现汉字转拼音
基于tensorflow权重文件的解读
May 26 #Python
解决Python字典查找报Keyerror的问题
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
tensorflow中的数据类型dtype用法说明
May 26 #Python
详解Python魔法方法之描述符类
May 26 #Python
You might like
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
情人节之礼 js项链效果
2012/02/13 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
python获取一组汉字拼音首字母的方法
2015/07/01 Python
解析Python编程中的包结构
2015/10/25 Python
Python定时器实例代码
2017/11/01 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
详解Python3注释知识点
2019/02/19 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
无工作经验者个人求职信范文
2013/12/22 职场文书
人事任命书范文
2014/06/04 职场文书
三问三解心得体会
2014/09/05 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
项目安全员岗位职责
2015/02/15 职场文书
毕业典礼主持词
2015/06/29 职场文书
警用民用对讲机找不同
2022/02/18 无线电
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js