Python 如何确保tf.变量在使用其值时已初始化?
如何在确保变量已初始化的情况下获取变量的当前值Python 如何确保tf.变量在使用其值时已初始化?,python,tensorflow,Python,Tensorflow,如何在确保变量已初始化的情况下获取变量的当前值tf.Variable.initialized_value()依赖于初始值设定项,使变量在每次访问时重置为初始值。为了防止变量被重置,我尝试使用tf.cond()和tf.is\u variable\u initialized()作为谓词。但是,这不起作用,因为条件的true分支需要初始化变量,即使false分支处于活动状态: import tensorflow as tf def once_initialized_value(variable):
tf.Variable.initialized_value()
依赖于初始值设定项,使变量在每次访问时重置为初始值。为了防止变量被重置,我尝试使用tf.cond()
和tf.is\u variable\u initialized()
作为谓词。但是,这不起作用,因为条件的true分支需要初始化变量,即使false分支处于活动状态:
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
对
变量类使用initialized\u value()
方法:
从文档字符串:
# 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)
我想你可以在下面的帖子中找到几个好答案: