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 相关文章推荐
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
python关闭windows进程的方法
Apr 18 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
python使用mysql的两种使用方式
Mar 07 Python
Numpy掩码式数组详解
Apr 17 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 Python
python+selenium实现自动抢票功能实例代码
Nov 23 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 Python
Python图像处理库PIL详细使用说明
Apr 06 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图片加水印原理(超简单的实例代码)
2013/01/18 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
Python字符串格式化
2015/06/15 Python
浅谈Python中函数的参数传递
2016/06/21 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
python3的输入方式及多组输入方法
2018/10/17 Python
wxpython绘制音频效果
2019/11/18 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
2015年部门工作总结范文
2015/03/31 职场文书
中国合伙人观后感
2015/06/02 职场文书
公司处罚决定书
2015/06/24 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
go语言中http超时引发的事故解决
2021/06/02 Golang
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers
Tomcat配置访问日志和线程数
2022/05/06 Servers