私はubuntu16.04でtensorflow1.4cpuバージョンを使用しています。 以前はmnistデータセットでconvnetモデルを訓練しました。KeyError: "名前の予測精度/精度/平均:0は存在しないTensorを指します...."
これでモデルに再度アクセスし、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=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."
また、保存されたグラフにすべてのtensors_nameが表示され、実際にはtensor_nameが終了しません。
私の質問は、再ロード後の訓練されたモデルのテストデータの精度をどのように評価することができますか?
推測:精度操作が追加される前に節約/メタグラフが保存されていますか? MetaGraphの作成時にその名前のグラフにopが存在することを確認できますか? –
こんにちは私はすでに問題を修正しました。精度は、セーバーの前に定義され、グラフに保存されますが、メタファイルには存在しません。私はグラフとメトグラフの違いを知らない。また、名前がメタデータに作成されたかどうかを確認する方法もわかりません。いくつかの試みの後、私はこのメソッドtf.train.import_meta_graph( 'tradConv_mnistModel/tradConvMnist- 10000.meta')がまったく動作しないと考えました。しかし、tf.train.Saver()。restoreが動作します!それを使用して問題を修正しました。 –