2017-03-07 56 views
0

如何獲得變量的當前值,同時確保它已被初始化? tf.Variable.initialized_value()對初始值設定項有依賴性,每次訪問時都會導致變量重置爲初始值。爲了防止變量被重置,我試圖用tf.cond()tf.is_variable_initialized()作爲謂詞。然而,這並不工作,因爲條件的真實分支需要的變量進行初始化,即使假分支有效:如何確保tf.Variable在使用其值時已初始化?

import tensorflow as tf 

def once_initialized_value(variable): 
    return tf.cond(
     tf.is_variable_initialized(variable), 
     lambda: variable.value(), 
     lambda: variable.initialized_value()) 

a = tf.Variable(42, name='a') 
b = tf.Variable(once_initialized_value(a), name='b') 

sess = tf.Session() 
sess.run(tf.global_variables_initializer()) 
print(sess.run(b)) # Error: Attempting to use uninitialized value a 
+0

我想你可以在下面的帖子找到了幾個很好的答案:http://stackoverflow.com/questions/35164529/in-tensorflow-is-there-any-辦法對剛剛初始化-U ninitialised變量 – Ali

回答

0

使用initialized_value()方法上Variable類: https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/python/ops/variables.py#L533

從文檔字符串:

# Initialize 'v' with a random tensor. 
v = tf.Variable(tf.truncated_normal([10, 40])) 
# Use `initialized_value` to guarantee that `v` has been 
# initialized before its value is used to initialize `w`. 
# The random values are picked only once. 
w = tf.Variable(v.initialized_value() * 2.0)