Tensorflow 如何在tensorlfow中自己的函数中定义tf.变量?

Tensorflow 如何在tensorlfow中自己的函数中定义tf.变量?,tensorflow,Tensorflow,我想在函数中初始化一个变量。当我运行代码时,会出现错误“试图使用未初始化的值变量_1”。我想知道为什么函数中定义的变量不能由'tf.initialize_all_variables()'初始化。如何在函数中使用变量?只有在调用myfunction()时才会创建该变量,如果在运行tf.initialize\u all\u variables()时已经创建了该变量,则会对其进行初始化。因此,在初始化所有变量之前,只需调用myfunction()。通常,如果需要,可以使用myfunction()构建整

我想在函数中初始化一个变量。当我运行代码时,会出现错误“试图使用未初始化的值变量_1”。我想知道为什么函数中定义的变量不能由'tf.initialize_all_variables()'初始化。如何在函数中使用变量?

只有在调用
myfunction()
时才会创建该变量,如果在运行
tf.initialize\u all\u variables()
时已经创建了该变量,则会对其进行初始化。因此,在初始化所有变量之前,只需调用
myfunction()
。通常,如果需要,可以使用
myfunction()
构建整个图形,然后在培训之前初始化,这样就不会有任何问题。。。请注意,
myfunction()
每次调用时都会创建一个新的(相同的)变量,它不会返回指向同一基础变量的指针

请参阅下面的代码:

import tensorflow as tf
import numpy as np


def myfunction():
    return_variable = tf.Variable(initial_value=0.0, dtype=tf.float32)
    return return_variable

a = np.random.randint(1, 5, size=(3, 2, 2))
a_variable = tf.Variable(a, tf.float32)
with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    print('a_variable')
    print(sess.run(a_variable))
    print('myfunction')
    print(sess.run(myfunction()))
import tensorflow as tf
import numpy as np
def myfunction():
    return_variable = tf.Variable(initial_value=0.0, dtype=tf.float32)
    return return_variable
a = np.random.randint(1, 5, size=(3, 2, 2))
a_variable = tf.Variable(a, tf.float32)
with tf.Session() as sess:
    x = myfunction()   # Create variable x, not initialized yet
    sess.run(tf.initialize_all_variables())  # Initialize all variables that already exist in your graph, including x, but y does not exist yet
    print('a_variable')
    print(sess.run(a_variable))
    print('x')  
    print(sess.run(x))  # Works fine: x is initialized
    print('y')
    y = myfunction()    # Create variable y, not initialized
    print(sess.run(y))  # This crashes, because y is not initialized