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)

我想你可以在下面的帖子中找到几个好答案: