Tensorflow KeyError:“;名称';预测/准确度/平均值:0';指不存在的张量……”;
我在ubuntu16.04上使用tensorflow1.4cpu版本。 我以前在mnist数据集上训练过一个convnet模型 现在我想再次访问该模型并预测mnist.test.images的准确性。我已成功加载模型:Tensorflow KeyError:“;名称';预测/准确度/平均值:0';指不存在的张量……”;,tensorflow,mnist,Tensorflow,Mnist,我在ubuntu16.04上使用tensorflow1.4cpu版本。 我以前在mnist数据集上训练过一个convnet模型 现在我想再次访问该模型并预测mnist.test.images的准确性。我已成功加载模型: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data', one_hot=T
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
images = mnist.test.images[0:1000]
labels = mnist.test.labels[0:1000]
sess=tf.Session()
saver = tf.train.import_meta_graph('tradConv_mnistModel/tradConvMnist-
10000.meta')
saver.restore(sess,
tf.train.latest_checkpoint('./tradConv_mnistModel'))
graph = tf.get_default_graph()
在之前训练的图表中,我打印了精度的名称,即:
with tf.name_scope('predictions'):
correct_prediction = tf.equal(
tf.argmax(y_conv, 1), tf.argmax(y_, 1))
with tf.name_scope('accuracy'):
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(accuracy.name)
"predictions/accuracy/Mean:0"
但当我尝试使用新加载的图形评估精度时,我得到以下错误:
tensor_name = "predictions/accuracy/Mean:0"
accuracy = graph.get_tensor_by_name(tensor_name)
print("test accuracy %g"%accuracy.eval(feed_dict={
x: images, y_: labels, keep_prob: 1.0}))
KeyError: "The name 'predictions/accuracy/Mean:0' refers to a Tensor
which does not exist. The operation, 'predictions/accuracy/Mean', does
not exist in the graph."
此外,我在保存的图形中打印了所有的张量_名称,事实上,该张量_名称并不存在
因此,我的问题是如何在重新加载后评估经过训练的模型a测试数据的准确性?方法tf.train.Saver().restore有效。但是另一种方法
tf.train.import\u meta\u图('tradConv\u mnistModel/tradConvMnist-10000.meta)不起作用 方法tf.train.Saver().restore有效。但是另一种方法
tf.train.import\u meta\u图('tradConv\u mnistModel/tradConvMnist-10000.meta)不起作用 猜测:在添加精度操作之前是否保存了保存程序/元图?当元图被创建时,你能检查op是否存在于具有该名称的图中吗?嗨,我已经解决了这个问题。精度在保存程序之前定义,并保存在图形中,但不在图元文件中。我不知道graph和methgraph之间的区别。我也不知道如何检查名称是否是在元图中创建的。经过几次尝试后,我发现这个方法tf.train.import\u meta\u graph('tradConv\u mnistModel/tradConvMnist-10000.meta')根本不起作用。但是tf.train.Saver()恢复工作!我用它解决了这个问题。猜猜:在添加精度运算之前是否保存了保存程序/元图?当元图被创建时,你能检查op是否存在于具有该名称的图中吗?嗨,我已经解决了这个问题。精度在保存程序之前定义,并保存在图形中,但不在图元文件中。我不知道graph和methgraph之间的区别。我也不知道如何检查名称是否是在元图中创建的。经过几次尝试后,我发现这个方法tf.train.import\u meta\u graph('tradConv\u mnistModel/tradConvMnist-10000.meta')根本不起作用。但是tf.train.Saver()恢复工作!我用它解决了这个问题,我也有同样的问题。您是否最终删除了语句“saver=tf.train.import\u meta\u graph('tradConv\u mnistModel/tradConvMnist-10000.meta')并将其替换为“tf.train.saver().restore”?您在哪里指定了文件路径?文件名中是否包含.meta扩展名?我也有同样的问题。您是否最终删除了语句“saver=tf.train.import\u meta\u graph('tradConv\u mnistModel/tradConvMnist-10000.meta')并将其替换为“tf.train.saver().restore”?您在哪里指定了文件路径?文件名中是否包含.meta扩展名?德克萨斯州