【问题标题】:FailedPreconditionError Tensorflow when reloading session重新加载会话时发生FailedPreconditionError Tensorflow
【发布时间】:2018-12-14 06:30:36
【问题描述】:

由于某种原因,在重新加载我使用 tr.train.Saver() 训练和保存的模型后,我收到了 FailedPreconditionError。这是我用来重新加载我训练模型的会话的代码。

def predict_lowres():
    tf.reset_default_graph()
    init_img = self.generator_1(input_text, r = tf.AUTO_REUSE)
    d = self.discriminator_1(init_img, input_text, is_train = True, r = tf.AUTO_REUSE)
    tensor_img = tf.squeeze(tf.cast(init_img, dtype = tf.uint8))
    with tf.Session() as sess:
        saver = tf.train.import_meta_graph('ckpts/model.ckpt.meta')
        saver.restore(sess, tf.train.latest_checkpoint('ckpts'))
        names = []
        for v in tf.get_default_graph().get_collection('variables'):
            names.append(v.name)
        print(names)
        # init_img = self.generator_1(input_text, r = tf.AUTO_REUSE)
        # tensor_img = tf.squeeze(tf.cast(init_img, dtype = tf.uint8))
        d, np_img = sess.run([d, tensor_img])
        print(d)
        imwrite("output_image_lowres.jpg", self.flip_channel_order(np_img, img_dim = 64))

使用一些打印语句调试我的代码后,我实现了以下

1) generator_1()、discriminator_1()和train_1()函数中的所有变量都被添加到图中

2) 只有在 train_1() 函数中声明的变量,即发生训练和实例化 saver 的函数,在调用 saver.restore() 时使用之前的值进行初始化

3) 如果我取消注释上面的两行注释,则不会调用 FailedPreconditionError,并且 generator_1() 和 discriminator_1() 中的变量都会被初始化,但变量张量的值与它们的值不同另存为。

第三个对我来说似乎特别奇怪,因为我在这里没有运行任何变量初始化程序。如果有人理解 saver.restore() 函数的工作原理,以及为什么图中的所有变量都没有被初始化,正如这里的文档所建议的那样 (https://www.tensorflow.org/api_docs/python/tf/train/Saver),任何帮助都会很棒。

这是我完整代码的链接,如果有帮助的话:https://github.com/vdopp234/Text2Image/blob/master/model.py

谢谢!

【问题讨论】:

    标签: python-3.x tensorflow


    【解决方案1】:

    我认为您在使用变量之前缺少初始化变量。像这样的:

    with tf.Session() as sess:
        tf.run(tf.global_variables_initializer())
    

    更多详情请查看answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 2018-10-25
      • 1970-01-01
      • 2020-08-05
      • 2012-12-28
      • 2016-06-26
      • 1970-01-01
      • 2018-01-23
      相关资源
      最近更新 更多