2017-08-25 25 views
1

我想在激活函數內產生隨機數,這樣每次激活函數被調用時都會產生一個隨機數。我嘗試使用random.uniform和tf.random_uniform,但它只在編譯時生成一個隨機值,並且不會再發生變化。我怎樣才能讓它每次更新?張量流中的隨機值

滑稽的事實: 當我創建使用tf.Variable(random.uniform(1,2))每次它就是所謂的價值函數稍大時間的變量,例如:

1.22069513798 
1.22072458267 
1.22075247765 
1.22077202797 

編輯: 的功能很簡單 功能:

def activation(tensor): 
    alpha = tf.Variable(random.uniform(1,2)) 
    return alpha*tensor,alpha 

我會省略了神經網絡中的所有行,但我只是把它作爲:

act,alpha = activation(dense_layer+bias) 

後來我通過簡單地獲得的價值:

[ts,c,alph]=sess.run([train_step,cost,alpha], feed_dict={xi: x_raw, yi: y_raw}) 

感謝

回答

0

很難說沒有源代碼,但也許您正在使用隨機值初始化你的變量和重複使用相同的值?

另一種可能性:

enter image description here

+0

我說我的最後一次嘗試的代碼。我不認爲你發佈它發生了什麼,因爲我打印了數千次迭代,給了我相同的隨機值:) – kuonb

+1

是的,你在初始化期間將你的隨機變量保存到變量alpha中。如果你想用新的隨機值重新初始化,你可以做'sess.run(alpha.initializer)' –

+0

它完美的工作!謝謝 : ) – kuonb