浅谈pytorch中的dropout的概率p


Posted in Python onMay 27, 2021

最近需要训练一个模型,在优化模型时用了dropout函数,为了减少过拟合。

训练的时候用dropout,测试的时候不用dropout。刚开始以为p是保留神经元的比率,训练设置0.5,测试设置1,loss根本没减小过,全设置成1也是一样的效果,后来就考虑到是不是p设置错了。

上网一搜,果然是的!!!p的含义理解错了!不是保留的,而是不保留的!

具体的代码为:

x2 = F.dropout(x1, p)

x1是上一层网络的输出,p是需要删除的神经元的比例。

当p=0时,保留全部神经元更新。当p=1时,神经元输出的值都为0。

补充:Pytorch--Dropout笔记

dropout常常用于抑制过拟合,pytorch也提供了很方便的函数。但是经常不知道dropout的参数p是什么意思。

在TensorFlow中p叫做keep_prob,就一直以为pytorch中的p应该就是保留节点数的比例,但是实验结果发现反了,实际上表示的是不保留节点数的比例。

看下面的例子:

a = torch.randn(10,1)
>>> tensor([[ 0.0684],
        [-0.2395],
        [ 0.0785],
        [-0.3815],
        [-0.6080],
        [-0.1690],
        [ 1.0285],
        [ 1.1213],
        [ 0.5261],
        [ 1.1664]])

p=0.5

torch.nn.Dropout(0.5)(a)
>>> tensor([[ 0.0000],  
        [-0.0000],  
        [ 0.0000],  
        [-0.7631],  
        [-0.0000],  
        [-0.0000],  
        [ 0.0000],  
        [ 0.0000],  
        [ 1.0521],  
        [ 2.3328]])

p=0

torch.nn.Dropout(0)(a)
>>> tensor([[ 0.0684],
        [-0.2395],
        [ 0.0785],
        [-0.3815],
        [-0.6080],
        [-0.1690],
        [ 1.0285],
        [ 1.1213],
        [ 0.5261],
        [ 1.1664]])

p=1

torch.nn.Dropout(0)(a)
>>> tensor([[0.],  
        [-0.], 
        [0.],  
        [-0.], 
        [-0.], 
        [-0.], 
        [0.],  
        [0.],  
        [0.],  
        [0.]])

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python实现换行符转换的脚本的教程
Apr 16 Python
Python + selenium自动化环境搭建的完整步骤
May 19 Python
Python列表推导式与生成器用法分析
Aug 02 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
matlab中imadjust函数的作用及应用举例
Feb 27 Python
selenium切换标签页解决get超时问题的完整代码
Aug 30 Python
python中random模块详解
Mar 01 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
PyTorch 实现L2正则化以及Dropout的操作
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
pytorch 实现在测试的时候启用dropout
使用Python脚本对GiteePages进行一键部署的使用说明
You might like
Smarty安装配置方法
2008/04/10 PHP
php文档更新介绍
2011/07/22 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
JS 动态加载脚本的4种方法
2009/05/05 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
python list语法学习(带例子)
2013/11/01 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python字符串连接的N种方式总结
2014/09/17 Python
python实现的发邮件功能示例
2019/09/11 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
陈欧广告词
2014/03/14 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
python 模块重载的五种方法
2021/04/24 Python