繁体   English   中英

使用tf.Variable的值时如何确保其已初始化?

[英]How to ensure a tf.Variable has been initialized when using its value?

如何在确保变量已被初始化的同时获取变量的当前值? tf.Variable.initialized_value()对初始化程序有依赖关系,该依赖关系导致每次访问变量时将变量重置为其初始值。 为了防止变量被重置,我尝试将tf.cond()tf.is_variable_initialized()用作谓词。 但是,这是行不通的,因为条件分支的真分支要求变量被初始化,即使假分支处于活动状态也是如此:

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

Variable类上使用initialized_value()方法: 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM