0

我读到了 Keras 的 dropout 实现,它似乎使用了它的反向 dropout 版本,即使它说的是 dropout。

以下是我阅读 Keras 和 Tensorflow 文档时的理解:

当我指定Dropout(0.4)0.4 意味着该层中的每个节点都有 40% 的机会被丢弃,这意味着 0.4 是丢弃概率。因此,通过反向 dropout 的概念,剩余神经元的输出被缩放 1/0.6 倍,因为保持概率为 0.6。

(请指出我的解释是否不正确。我的全部疑问都是基于这种解释。)

另一方面,在 TensorFlow 中,它只是直接询问保持概率,这意味着如果我将值指定为 0.4,则每个节点都有 60% 的机会被丢弃。

那么当我在 Keras 的后端使用 TensorFlow 时会发生什么?保持或丢弃概率需要 0.4 吗?

(使用 Python 3.6 和所有必需库的最新版本)

4

2 回答 2

0

Dropout(0.4)在 Keras 层中意味着 40% 的神经元被丢弃(不保留)。

来自Keras 文档

Dropout 包括在训练期间的每次更新时将输入单元的分数率随机设置为 0,这有助于防止过度拟合。

于 2017-09-26T20:11:00.413 回答
0

查看层的源代码(第 72 行)Dropout也可以帮助确定答案。

Dropout 包括在训练期间的每次更新时将输入单元的分数“率”随机设置为 0,这有助于防止过度拟合。

消息来源还注意到由 Nitish Srivastava等人在此处找到的参考论文(我假设它准确地概述了如何keras实现 dropout) 。_


尽管阅读了更多源代码,但它看起来像是在第 107 行调用了 droput 的后端实现

return K.dropout(inputs, self.rate, noise_shape, seed=self.seed)

K后端在哪里。K.dropout如果您仍然好奇,可能值得研究一下您选择的后端是如何实现的。

于 2017-09-26T20:32:15.600 回答