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编写基于DHT协议的BT资源爬虫
Mar 19 Python
Python简单获取自身外网IP的方法
Sep 18 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
python实现感知器算法(批处理)
Jan 18 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
Django中Middleware中的函数详解
Jul 18 Python
Python pickle模块实现对象序列化
Nov 22 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
django模板获取list中指定索引的值方式
May 14 Python
python 爬取华为应用市场评论
May 29 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模板之Phpbean的目录结构
2008/01/10 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
原生js轮播特效
2017/05/18 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
pandas数据集的端到端处理
2019/02/18 Python
Python秒算24点实现及原理详解
2019/07/29 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
企业管理专业个人求职信范文
2013/09/24 职场文书
法学毕业生自荐信
2013/11/13 职场文书
电子商务自荐书范文
2014/01/04 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL