当前位置:首页 > 编程笔记 > 正文
已解决

pytorch dropout 置零 + 补偿性放缩

来自网友在路上 11038103提问 提问时间:2023-11-08 00:48:38阅读次数: 103

最佳答案 问答题库1038位专家为你答疑解惑

一句话概括:(训练过程中)Dropout 操作 = 随机置零 + 非置零元素进行后补偿性放缩。以保证dropout前后数据scale不变。

详细解释(来自chatgpt):

在 PyTorch 中,dropout 的操作不仅仅是将某些元素置零。为了确保期望输出在训练和测试时保持一致,当应用 dropout 时,被保留的元素会按 (1 / (1 - p)) 进行缩放,其中 p 是 dropout 的概率。

具体来说,如果有一个神经元的输出值为 x 并且你应用了 dropout 操作(设定概率 p),那么在训练期间,这个值 x 有 p 的概率会被置为 0,而有 1-p 的概率会被乘以 1 / (1 - p)。这样的设计是为了确保整体输出的期望值在训练时和测试时(dropout 被关闭)保持一致。

例如,假设 p=0.5,则有一半的机会让 x 变为0,而另一半的机会让 x 变为 2x(因为 1 / (1 - 0.5) = 2)。这样,期望的输出值是 (0.5 * 0 + 0.5 * 2x) = x,与原始的 x 相匹配。

所以,在 PyTorch 的 dropout 操作中,除了置零外,还会对保留的元素进行缩放。

ps: 其实这个设置,在dropout论文里是有阐述的,并不是一个technical trick.

pytorch中的函数介绍

torch.nn.Dropout中对scale操作有介绍,F.dropout里没提,但是其实二者都用了scale。!过分

请添加图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"pytorch dropout 置零 + 补偿性放缩":http://eshow365.cn/6-34892-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!