我写了一个 tensorflow CNN,它已经被训练过了。我希望恢复它以在几个样本上运行它但不幸的是它吐了出来:
ValueError:没有要保存的变量
我的评估代码可以在这里找到:
import tensorflow as tf
import main
import Process
import Input
eval_dir = "/Users/Zanhuang/Desktop/NNP/model.ckpt-30"
checkpoint_dir = "/Users/Zanhuang/Desktop/NNP/checkpoint"
init_op = tf.initialize_all_variables()
saver = tf.train.Saver()
def evaluate():
with tf.Graph().as_default() as g:
sess.run(init_op)
ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
saver.restore(sess, eval_dir)
images, labels = Process.eval_inputs(eval_data = eval_data)
forward_propgation_results = Process.forward_propagation(images)
top_k_op = tf.nn.in_top_k(forward_propgation_results, labels, 1)
print(top_k_op)
def main(argv=None):
evaluate()
if __name__ == '__main__':
tf.app.run()
原文由 Zan Huang 发布,翻译遵循 CC BY-SA 4.0 许可协议
tf.train.Saver
必须在要恢复(或保存)的变量 之后 创建。此外,它必须在与这些变量相同的图表中创建。假设
Process.forward_propagation(…)
也在您的模型中创建变量,在此行之后添加保护程序创建应该可以工作:此外,您必须将您创建的新的
tf.Graph
with
给tf.Session
构造函数,因此您需要将sess
的创建移动到里面---
块也是。结果函数将类似于: