如何初始化tensorflow函数中定义的变量?

时间:2018-05-02 15:02:18

标签: python tensorflow

在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

3 个答案:

答案 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)

你应该使用,

tf.global_variables_initializer()

开始Session初始化变量。

Tensorflow Variable

答案 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.Graphtf.Session执行这些变量。

输出:

  

[2]