将Keras与TensorFlow后端一起使用时的辍学

时间:2017-09-26 19:22:36

标签: python-3.x tensorflow keras regularized

我读到了关于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和所有必需库的最新版本)

2 个答案:

答案 0 :(得分:0)

Keras层中的

Dropout(0.4)意味着40%的神经元掉落(未保留)。

来自Keras documentation

  

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如何在你选择的后端实现。