FailedPreconditionError:尝试使用未初始化的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FailedPreconditionError:尝试使用未初始化的值相关的知识,希望对你有一定的参考价值。

我正在尝试组建一个神经网络,我想保存我初始化网络以供以后使用的权重。

这是创建网络的代码:

def neural_network_model(data, layer_sizes):
    num_layers = len(layer_sizes) - 1 # hidden and output layers
    layers = [] # hidden and output layers

    # initialise the weights
    weights = {}
    for i in range(num_layers):
        w_name = 'W' + str(i+1)
        b_name = 'b' + str(i+1)
        w = tf.get_variable(w_name, [layer_sizes[i], layer_sizes[i+1]], 
            initializer = tf.contrib.layers.xavier_initializer(), dtype=tf.float32)
        b = tf.get_variable(b_name, [layer_sizes[i+1]], 
            initializer = tf.zeros_initializer(), dtype=tf.float32)
        layers.append({'weights': w, 'biases': b})
        weights[w_name] = w

    # save the weights dictionary
    saver = tf.train.Saver(var_list=weights)
    with tf.Session() as sess:
        sess.run(init)   
        save_path = saver.save(sess, path + 'weights.ckpt') # path is set elsewhere

我得到的错误如下:

FailedPreconditionError: Attempting to use uninitialized value b2

(我也把W1W3作为未初始化的值)。

这怎么可能? sess.run(init)(我在代码前面指定inittf.global_variables_initializer())不应该关注所有变量初始化吗?

答案

完成创建图形后,最后需要创建variable initializer。 当你调用tf.global_variable_initializer()时,它会获取在此之前创建的所有可训练变量。因此,如果在创建图层(和变量)之前定义它,那么这些新变量将不会添加到此初始值设定项中。

以上是关于FailedPreconditionError:尝试使用未初始化的值的主要内容,如果未能解决你的问题,请参考以下文章

FailedPreconditionError:尝试在 Tensorflow 中使用未初始化

FailedPreconditionError:尝试在 Tensorflow 中使用未初始化

尝试在张量流上使用 RMSPropOptimizer 时出现 FailedPreconditionError

FailedPreconditionError:尝试使用未初始化的值

FailedPreconditionError:尝试使用未初始化的值Adam / lr

tensorflow.python.framework.errors_impl.FailedPreconditionError: Could not find variable var.