TensorFlow: "Attempting to use uninitialized value" in variable initialization TensorFlow: "Attempting to use uninitialized value" in variable initialization python python

TensorFlow: "Attempting to use uninitialized value" in variable initialization


Run this:

init = tf.global_variables_initializer()sess.run(init)

Or (depending on the version of TF that you have):

init = tf.initialize_all_variables()sess.run(init)


It's not 100% clear from the code example, but if the list initial_parameters_of_hypothesis_function is a list of tf.Variable objects, then the line session.run(init) will fail because TensorFlow isn't (yet) smart enough to figure out the dependencies in variable initialization. To work around this, you should change the loop that creates parameters to use initial_parameters_of_hypothesis_function[i].initialized_value(), which adds the necessary dependency:

parameters = []for i in range(0, number_of_attributes, 1):    parameters.append(tf.Variable(        initial_parameters_of_hypothesis_function[i].initialized_value()))


There is another the error happening which related to the order when calling initializing global variables. I've had the sample of code has similar error FailedPreconditionError (see above for traceback): Attempting to use uninitialized value W

def linear(X, n_input, n_output, activation = None):    W = tf.Variable(tf.random_normal([n_input, n_output], stddev=0.1), name='W')    b = tf.Variable(tf.constant(0, dtype=tf.float32, shape=[n_output]), name='b')    if activation != None:        h = tf.nn.tanh(tf.add(tf.matmul(X, W),b), name='h')    else:        h = tf.add(tf.matmul(X, W),b, name='h')    return hfrom tensorflow.python.framework import opsops.reset_default_graph()g = tf.get_default_graph()print([op.name for op in g.get_operations()])with tf.Session() as sess:    # RUN INIT    sess.run(tf.global_variables_initializer())    # But W hasn't in the graph yet so not know to initialize     # EVAL then error    print(linear(np.array([[1.0,2.0,3.0]]).astype(np.float32), 3, 3).eval())

You should change to following

from tensorflow.python.framework import opsops.reset_default_graph()g = tf.get_default_graph()print([op.name for op in g.get_operations()])with tf.Session() as     # NOT RUNNING BUT ASSIGN    l = linear(np.array([[1.0,2.0,3.0]]).astype(np.float32), 3, 3)    # RUN INIT    sess.run(tf.global_variables_initializer())    print([op.name for op in g.get_operations()])    # ONLY EVAL AFTER INIT    print(l.eval(session=sess))