这篇教程浅谈pytorch中的dropout的概率p写得很实用,希望能帮到您。 最近需要训练一个模型,在优化模型时用了dropout函数,为了减少过拟合。 训练的时候用dropout,测试的时候不用dropout。刚开始以为p是保留神经元的比率,训练设置0.5,测试设置1,loss根本没减小过,全设置成1也是一样的效果,后来就考虑到是不是p设置错了。 上网一搜,果然是的!!!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.5torch.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=0torch.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=1torch.nn.Dropout(0)(a)>>> tensor([[0.], [-0.], [0.], [-0.], [-0.], [-0.], [0.], [0.], [0.], [0.]]) 以上为个人经验,希望能给大家一个参考,也希望大家多多支持51zixue.net。 让文件路径提取变得更简单的Python Path库 pytorch Dropout过拟合的操作 |