Zan*_*ang 16 python machine-learning 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()
Run Code Online (Sandbox Code Playgroud)
mrr*_*rry 22
在tf.train.Saver必须创建后要恢复(或保存)的变量.此外,它必须在与这些变量相同的图形中创建.
假设Process.forward_propagation(…)还在模型中创建变量,在此行之后添加保护程序创建应该起作用:
forward_propgation_results = Process.forward_propagation(images)
Run Code Online (Sandbox Code Playgroud)
此外,您必须将tf.Graph您创建的新内容传递给tf.Session构造函数,因此您还需要移动该块sess内部的创建with.
结果函数将是这样的:
def evaluate():
with tf.Graph().as_default() as g:
images, labels = Process.eval_inputs(eval_data = eval_data)
forward_propgation_results = Process.forward_propagation(images)
init_op = tf.initialize_all_variables()
saver = tf.train.Saver()
top_k_op = tf.nn.in_top_k(forward_propgation_results, labels, 1)
with tf.Session(graph=g) as sess:
sess.run(init_op)
saver.restore(sess, eval_dir)
print(sess.run(top_k_op))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25218 次 |
| 最近记录: |