2017-06-19 63 views
1

我正在MNIST上培訓我的網絡。經過一些時代後,它的學習真的很好。我使用的初始化像Tensorflow政黨成員:0訓練隨機初始化權重後會發生什麼?

def weight_variable(shape): 
    initial = tf.truncated_normal(shape, stddev=0.1) 
    return tf.Variable(initial) 

def bias_variable(shape): 
    initial = tf.constant(0.1, shape=shape) 
    return tf.Variable(initial) 

而且,當我不訓練了,我最終總是相同的預測(使用SOFTMAX),如:

[[0, 0, 0, 0, 1, 0, 0, 0, 0, 0]] 

我顯然沒想到它可以很好地分類。

但我期望有隨機預測,並不總是相同的預測。

預計這種行爲?

謝謝

+0

對不起,我誤解了你的問題,你能粘貼一些重現錯誤的代碼片段嗎? – npf

+0

沒有pb :)我不知道這是否是一個錯誤。如果我隨機初始化我的權重,我不應該以[[0.14,0.08,0.03,0.12,0.15,0.9,...]](我稱之爲隨機分數?[ ])這樣的分數結束,我可能不是一個錯誤,但如果不是,我想明白爲什麼:) –

回答

2

如果你有使用已初始化還沒有被訓練隨機權重tensorflow圖,這是非常有可能的結果是所有的一類。

讓我們研究這與XOR:2個輸入,3個隱藏單元,1個輸出像這樣

W1_shape = [2,3] # in the range [-.1,.1] 
b1_shape = [3] # initialized to .1 

W2_shape = [3,1] # in the range [-.1,.1] 
b2_shape = [1] # initialized to .1 

示例值是

W1 [[-0.06278145 -0.01198458 0.12907881] 
[ 0.04213665 0.03700039 -0.05857842]] 

b1 0.1 

W2 [[ 0.14718919] 
[ 0.08633115] 
[ 0.10883235]] 

b2 0.1 

這導致XOR總是報告略微 TRUE。

運行初始化10次後,結果始終相同,略微對於所有XOR情況均爲TRUE。

但是,如果我改變B1B2爲0.001,則輸出是要麼全部略微 TRUE或略有假的,但不是一些混合的特定初始化。看着權重,顯而易見的是一些權重壓倒了整個圖表。只需幾次訓練迭代,這些權重就可以快速排列。

+0

好吧,我在想什麼,你給了我一個具體的,更簡單的例子,謝謝你! :)事實上,當我在訓練時,它很快就給了我更好的結果(我想他們就像你說的那樣,「排成一行」,謝謝亞當優化者:)) –

相關問題