2017-05-19 52 views
0

比方說,我在構建神經網絡,像這樣:Tensorflow Dropout:如果我應用兩個丟失圖層會發生什麼?

x = tf.nn.conv2d(input, ...) 
x = tf.nn.max_pool(x, ...) 
x = tf.nn.dropout(x, keep_prob=1.) 
x = tf.nn.thislayershallhavedropout(x,...) 
x = tf.nn.dropout(x, keep_prob=.5) 

請問這是告訴TensorFlow剛剛輟學層thislayershallhavedropout的有效方法?

基本上,我想要做的就是告訴TensorFlow只在單層上使用dropout,而不是級聯回先前的層。

+1

我不清楚你想做什麼的語義。 'dropout'是一個層操作,很像ReLU,池或激活。刪除(重置)一半權重不會直接影響先前或連續圖層中的權重;它在前向數據流的這一點上被應用。對後向傳播沒有影響。 – Prune

+0

總之,100%保留的退出是空操作。 – Prune

+0

@Prune輟學** **激活**。 dropconnect會降低權重。 – MaxB

回答

1

輟學設置激活,通過0具有給定的機會。很難給出「圖層」輟學,因爲您只設置了與01的連接。

如果你想給從某層輟學外出的連接,你應該做的:

x = tf.nn.thislayershallhavedropout(x,...) 
x = tf.nn.dropout(x, keep_prob=.5) 

你已經基本完成。因此來自thislayershallhavedropout的激活的50%將被取消激活。

順便說一句,正如所指出的意見,設置keep_prob到1沒有任何效果可言:這會讓所有激活通過像正常的。

x = tf.nn.dropout(x, keep_prob=1.) 

請記住:輟學可能不直接與先前的層干擾,然而,反向傳播過程中,以前和succesive層的權重將適應被禁用一半激活。因此,您無法防止在之前的圖層上產生(間接)效果。

+0

好了解!你介意分享最後一個重點句子的信息來源嗎? – Ulu83

+0

@ Ulu83它實際上是您的問題的複製評論。我改變了它。 –

相關問題