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 相关文章推荐
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
python修改字典内key对应值的方法
Jul 11 Python
numpy 计算两个数组重复程度的方法
Nov 07 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
python学生管理系统学习笔记
Mar 19 Python
详解python配置虚拟环境
Apr 08 Python
Python进度条的制作代码实例
Aug 31 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python实现粒子群算法的示例
Feb 14 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
做个自己站内搜索引擎
2006/10/09 PHP
编写PHP的安全策略
2006/10/09 PHP
BBS(php & mysql)完整版(五)
2006/10/09 PHP
php header Content-Type类型小结
2011/07/03 PHP
php实现通过ftp上传文件
2015/06/19 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
python访问系统环境变量的方法
2015/04/29 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
绿色环保口号
2014/06/12 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
四风之害观后感
2015/06/09 职场文书
学生安全责任协议书
2016/03/22 职场文书