在TensorFlow中,我想在函数内部定义变量,进行一些处理并根据某些计算返回一个值。但是,我无法初始化函数内部的变量。以下是代码的最小示例:
import tensorflow as tf
def foo():
x = tf.Variable(tf.ones([1]))
y = tf.ones([1])
return x+y
if __name__ == '__main__':
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(foo()))
运行代码会产生以下错误:
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable
答案 0 :(得分:3)
在初始化所有变量之前,根本没有调用函数foo()。所以它无法初始化foo()中的变量。我们需要在运行会话之前调用该函数。
import tensorflow as tf
def foo():
x=tf.Variable(tf.zeros([1]))
y=tf.ones([1])
return x+y
with tf.Session() as sess:
result=foo()
init=tf.global_variables_initializer()
sess.run(init)
print(sess.run(result))
答案 1 :(得分:0)
答案 2 :(得分:0)
在初始化之前,您没有将这些变量定义为默认train_x.values
。
tf.Graph
此代码在根据请求初始化变量之前将变量定义到import tensorflow as tf
def foo():
x = tf.Variable(tf.ones([1]))
y = tf.ones([1])
return x + y
if __name__ == '__main__':
with tf.Graph().as_default():
result = foo()
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(result))
,因此您可以在tf.Graph
到tf.Session
执行这些变量。
输出:
[2]