您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:浅谈pytorch中的dropout的概率p

51自学网 2021-10-30 22:37:20
  python
这篇教程浅谈pytorch中的dropout的概率p写得很实用,希望能帮到您。

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持51zixue.net。


让文件路径提取变得更简单的Python Path库
pytorch Dropout过拟合的操作
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。