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 08 Python
Python中使用第三方库xlrd来读取Excel示例
Apr 05 Python
浅谈python字符串方法的简单使用
Jul 18 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
Python八皇后问题解答过程详解
Jul 29 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
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 4.2书写安全的脚本
2006/10/09 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
新浪的图片新闻效果
2007/01/13 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
pandas string转dataframe的方法
2018/04/11 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
给学校的建议书范文
2014/05/15 职场文书
个性婚礼策划方案
2014/05/17 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL