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深入学习之对象的属性
Aug 31 Python
python连接MySQL数据库实例分析
May 12 Python
Python中断言Assertion的一些改进方案
Oct 27 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
python列表list保留顺序去重的实例
Dec 14 Python
python解析json串与正则匹配对比方法
Dec 20 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
让你的Python代码实现类型提示功能
Nov 19 Python
Python 寻找局部最高点的实现
Dec 05 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
Python 内置函数速查表一览
Jun 02 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 和 MySQL 基础教程(四)
2006/10/09 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
js插件实现图片滑动验证码
2020/09/29 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
学习党课思想汇报
2013/12/29 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
双创工作实施方案
2014/03/26 职场文书
《春雨》教学反思
2014/04/24 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
大学生毕业评语
2014/12/31 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL