Python 3.x 重新加载会话时失败的预处理错误Tensorflow
出于某种原因,在重新加载我使用tr.train.Saver()训练并保存的模型后,我得到了一个FailedPredicateError。这是我用来重新加载训练模型的会话的代码Python 3.x 重新加载会话时失败的预处理错误Tensorflow,python-3.x,tensorflow,Python 3.x,Tensorflow,出于某种原因,在重新加载我使用tr.train.Saver()训练并保存的模型后,我得到了一个FailedPredicateError。这是我用来重新加载训练模型的会话的代码 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_tex
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))
在使用一些print语句调试代码之后,我实现了以下几点
1) 生成器_1()、鉴别器_1()和列_1()函数中的所有变量都添加到图中
2) 调用saver.restore()时,只有在train_1()函数中声明的变量(即进行培训和实例化saver的函数)才使用以前的值初始化
3) 如果我取消注释上面的两行注释,则不会调用FailedPremissionError,并且生成器_1()和鉴别器_1()中的变量都将初始化,但变量张量的值与它们保存为的值不同
第三个对我来说似乎特别奇怪,因为我没有在这里运行任何变量初始值设定项。如果有人知道saver.restore()函数是如何工作的,以及为什么图中的所有变量都没有按照此处的文档()所建议的那样进行初始化,那么任何帮助都将非常有用
下面是我的完整代码的链接,如果有帮助的话:
谢谢大家! 我认为您没有在使用变量之前初始化它们。大概是这样的:
with tf.Session() as sess:
tf.run(tf.global_variables_initializer())
有关更多详细信息,请查看此