我读到了关于Keras实现的dropout,它似乎正在使用它的反向丢失版本,即使它说丢失。
以下是我在阅读Keras和Tensorflow文档时所理解的内容:
当我指定Dropout(0.4)
时,0.4意味着该层中的每个节点有40%的机会被丢弃,这意味着0.4是丢弃概率。因此,通过反向丢失的概念,剩余神经元的输出按1 / 0.6的比例缩放,因为保持概率为0.6。
(请指出我的解释是否错误。我的全部怀疑是基于这种解释。)
另一方面,在TensorFlow中,它只是直接请求保持概率意味着如果我指定值0.4,则每个节点有60%的机会被丢弃。
那么当我在Keras的后端使用TensorFlow时会发生什么?保持或丢弃概率需要0.4吗?
(使用Python 3.6和所有必需库的最新版本)
答案 0 :(得分:0)
Dropout(0.4)
意味着40%的神经元掉落(未保留)。
Dropout包括随机设置输入单位的分数率 训练期间每次更新时为0,这有助于防止 过度拟合。
答案 1 :(得分:0)
查看Dropout
图层的source code (Line 72)也有助于确定答案。
Dropout包括随机设置输入单位的分数“比率” 在训练期间每次更新时为0,这有助于防止 过度拟合。
该消息来源还注意到一篇参考文献(我假设确切地概述了keras
如何实现辍学){3}}由Nitish Srivastava撰写等。人
虽然更多地阅读了源代码,但它看起来像是在第107行调用droput的后端实现
return K.dropout(inputs, self.rate, noise_shape, seed=self.seed)
K
是后端的位置。如果你仍然好奇的话,可能值得研究K.dropout
如何在你选择的后端实现。