最近需要训练一个模型,在优化模型时用了dropout函数,为了减少过拟合。训练的时候用dropout,测试的时候不用dropout。刚开始以为p是保留神经元的比率,训练设置0.5,测试设置1,loss根本没减小过,全设置成1也是一样的效果,后来就考虑到是不是p设置错了。上网一搜,果然是的!!!p的含义理解错了!不是保留的,而是不保留的!
具体的代码为:
x2 = F.dropout(x1, p)
x1是上一层网络的输出,p是需要删除的神经元的比例。
当p=0时,保留全部神经元更新。当p=1时,神经元输出的值都为0。
以上是结论,具体的实验看这个博客:https://www.cnblogs.com/marsggbo/p/10592643.html