新闻动态

浅谈pytorch中的dropout的概率p

发布日期:2022-04-04 15:09 | 文章来源:站长之家

最近需要训练一个模型,在优化模型时用了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.]]) 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

海外服务器租用

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部