2017-09-26 80 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

相關問題