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使用递归解决全排列数字示例
Feb 11 Python
python连接MySQL数据库实例分析
May 12 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
分析Python list操作为什么会错误
Nov 17 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 获取SWF动画截图示例代码
2014/02/10 PHP
thinkphp分页集成实例
2017/07/24 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
js 对象是否存在判断
2009/07/15 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
Python3.x中自定义比较函数
2015/04/24 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
Python如何重新加载模块
2020/07/29 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
进程的查看和调度分别使用什么命令
2015/03/25 面试题
党员培训思想汇报
2014/01/07 职场文书
党支部综合考察材料
2014/05/19 职场文书
员工辞退通知书
2015/04/17 职场文书
检讨书格式
2015/05/07 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android