Python 官方文档:入门教程 => 点击学习
最近需要训练一个模型,在优化模型时用了dropout函数,为了减少过拟合。 训练的时候用dropout,测试的时候不用dropout。刚开始以为p是保留神经元的比率,训练设置0.5,
最近需要训练一个模型,在优化模型时用了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]])
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]])
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]])
torch.nn.Dropout(0)(a)
>>> tensor([[0.],
[-0.],
[0.],
[-0.],
[-0.],
[-0.],
[0.],
[0.],
[0.],
[0.]])
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: 浅谈pytorch中的dropout的概率p
本文链接: https://lsjlt.com/news/126950.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0