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实现全局变量的两个解决方法
Jul 03 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
django使用graphql的实例
Sep 02 Python
Python安装Bs4的多种方法
Nov 28 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 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生成唯一的订单函数分享
2015/02/02 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python中%r和%s的详解及区别
2017/03/16 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
促销活动策划方案
2014/01/12 职场文书
求职简历中自我评价
2014/01/28 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
换届选举主持词
2015/07/03 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
5个实用的JavaScript新特性
2022/06/16 Javascript
mysql sql常用语句大全
2022/06/21 MySQL