2017-09-26 79 views
0

我读到了关于Keras实现的辍学,它似乎在使用它的反辍学版本,即使它说失落。与TensorFlow后端使用Keras时的辍学

这是我读Keras和Tensorflow文件我已经明白:

当我指定Dropout(0.4) 0.4意味着,在该层每个节点都有被丢弃其中有40%的几率意味着0.4是丢弃概率。因此,通过反向丢失的概念,由于保持概率为0.6,所以其余神经元的输出被缩放1/0.6的因子。

(请指出,如果我的解释是不正确。我的整个怀疑是基于这种解释。)

在另一方面在TensorFlow它只是询问我是否指定0.4的值保持概率直接意义每个节点有60%的机会被丢弃。

那么当我在Keras的后端使用TensorFlow时会发生什么?保持或下降概率是否需要0.4?

(使用Python 3.6与最新版本的所有所需的库)在Keras层

回答

0

Dropout(0.4)意味着你的神经元的40%正在下降(不保留)。

Keras documentation

降在于在训练时间,这有助于防止过度拟合 输入单元的分数速率随机设定为0 在每个更新。

+0

我清楚地明白,正如你在问题中看到的,我已经指定了与你指定的完全相同的东西。但这不是我所要求的。 TensorFlow实现了反向丢失,但要求保持概率,所以如果我说在张量流中丢失(0.4),它将有60%的丢弃概率。我的问题:如果我在Keras的后端使用TensorFlow并指定退出(0.4)那么该节点是否有40%的几率被丢弃或40%的机会被保留? –

+0

感谢您的评论。我想我正确地理解了你。我认为Keras是一种API,可以抽象出很多后端,以便提供统一的界面,而不管你的后端。所以在几乎所有方面你都不会注意到Keras模型在你使用的后端方面有什么不同。但无论如何:一个简单的方法来检查你自己将设置退出非常高,说.99甚至1.0。你会看到这个数量的神经元被丢弃(不保留)。 – petezurich

0

查看Dropout图层的source code (Line 72)也可以帮助确定答案。

降在于在训练时间,这有助于防止过度拟合 随机设定的输入单元在每个更新 0的分数“速率”。

源还注意到尼蒂什塔瓦等写入一个参考文件(我假定恰好概述了如何实现keras压差)found here。 al


虽然阅读源多一点,看起来它身边召唤线107

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

后端实现droput凡K是后端。如果您仍然好奇,可以考虑如何在后端选择K.dropout

+0

我在我的问题中提到TensorFlow实现了反向丢弃,但要求保持概率,即如果我说明了0.4,那么该节点有60%的机会被丢弃。但另一方面,如果我在keras中指定相同的节点有40%的机会被丢弃。所以,如果我在keras的后端使用TENSORFLOW,并且指定了丢失(0.4),那么这个节点的概率是40%还是60%? –

+0

“训练时间内,每次更新时输入单位的分数”比率“随机设置为0,这有助于防止过度拟合。” – KDecker