2017-05-09 97 views
0

我對自己在tensorflow隨機變量的一個問題。假設我需要一個隨機變量在我的損失函數中。 在張量流程教程中,我發現用於初始化變量的隨機函數,如第二次通過訓練過程修改的權重。 在我的情況下,我需要一個隨機向量的浮點數(假設有128個值),它遵循特定的分佈(統​​一或高斯),但可以更改每個損失計算。 定義在我的損失函數這個變量,是我需要做簡單的事情,因爲在每一個時期我得到新的值(即反正按照選定的分配),或者我得到的總是在所有迭代相同的價值觀?Tensorflow和隨機變量

感謝,

丹尼爾

+0

您可能還需要檢查tf.set_random_seed),他們隨機討論如何在圖形級別和級別更細緻的控制文檔(:https://開頭WWW .tensorflow.org/api_docs /蟒/ TF/set_random_seed –

回答

2

在tensorflow隨機節點每次調用時總是採取不同的價值,你可以通過調用幾次

import tensorflow as tf 
x = tf.random_uniform(shape=()) 
sess = tf.Session() 
sess.run(x) 
# 0.79877698 
sess.run(x) 
# 0.76016617 

這不是驗證因爲您可以從上面的代碼中檢查,其運行時無需調用變量初始化。

0

如果分配隨機生成的Variable然後,直到更新此變量此值將保持固定的值。

如果相反,放在數字的損失函數直接在「一代」(tf.random_*),那麼他們將在每次調用不同。

剛剛嘗試了這一點:

import tensorflow as tf 

# generator 
x = tf.random_uniform((3,1), minval=0, maxval=10) 

# variable 
a = tf.get_variable("a", shape=(3,1), dtype=tf.float32) 

# assignment 
b = tf.assign(a, x) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    for i in range(5): 
     # 5 different values 
     print(sess.run(x)) 

    # assign the value 
    sess.run(b) 
    for i in range(5): 
     # 5 equal values 
     print(sess.run(a))