2017-10-05 10 views
2

質問の詳細をきれいに保つために不要なコードスニペットを省略しました。私は、トレーニングとテストモデルの両方の曲線をプロットしようとしています。私はトレーニングの損失と精度曲線を保存することができます。 test_writerを使用して書き込むときしかし、私は次のエラーを取得しています:テストセットのためにtf.summary()を使用して精度を保存できません

test_writer.add_summary(test_summary,step*batch_size) 
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/summary/writer/writer.py", line 123, in add_summary 
    for value in summary.value: 
AttributeError: 'list' object has no attribute 'value' 

コード:マイトレーニング曲線は細かいプロットされ

accuracy = tf.reduce_mean(correct_prediction) 

#Summary 
tf.summary.scalar("loss",cross_entropy) 
accuracy_summary = tf.summary.scalar("accuracy",accuracy) 

merged_summary_op = tf.summary.merge_all() 
train_writer = tf.summary.FileWriter(graph_location) 
train_writer.add_graph(tf.get_default_graph()) 
test_writer = tf.summary.FileWriter(location) 
test_writer.add_graph(tf.get_default_graph()) 

with tf.Session() as sess: 
    print "STARTED TENSORLFOW SESSION" 
    sess.run(tf.initialize_all_variables()) 
    while step*batch_size < training_iters: 
     if count <= 900: 
      _,summary = sess.run([train_step,merged_summary_op], feed_dict={x:batch_xs, j:batch_js, y_:batch_ys, keep_prob:dropout}) 
      train_writer.add_summary(summary, step*batch_size) 
     else: 
      test_summary = sess.run([accuracy_summary], feed_dict={x:test_xs,j:test_js,y_:test_ys, keep_prob: 0.5}) 
      test_writer.add_summary(test_summary,step*batch_size) 

。私のテストカーブは、 test_summary = sess.run([train_step,merged_summary_op], feed_dict={x:test_xs,j:test_js,y_:test_ys, keep_prob: 0.5})に変更しても機能しますが、テストセットにフィードしてオプティマイザをトレーニングしたくないので意味がありません。

私はここで何が間違っていますか?

答えて

5

私はあなただけスカラー出力ではなく、リストを持っているために、

test_summary = sess.run([accuracy_summary], feed_dict={x:test_xs,j:test_js,y_:test_ys, keep_prob: 0.5}) 

から

test_summary = sess.run(accuracy_summary, feed_dict={x:test_xs,j:test_js,y_:test_ys, keep_prob: 0.5}) 

に最後から二番目の行を書き換えるべきだと思います。

+1

これは本当に正しいことでした。ありがとうございました。そのテストセットの損失と精度の値を得るには 'test_summary = sess.run(merged_summary_op、feed_dict = {x:test_xs、j:test_js、y_:test_ys、keep_prob:0.5}) 'と置き換えることもできますか? – deeplearning

+0

はい、そうだと思います。このようにして、より多くの要約があると、それらはすべて更新されます – Pop

+0

私は参照してください。ただ、 accuracy_summary = tf.summary.scalar( "精度"、精度) merged_summary_op = tf.summary.merge_all() ' はtest_writer'上の'実行していることを確認 'tf.summary.scalar( "損失"、cross_entropy)を作るために'merged_summary_op()'は与えられたテストの権利に対する私の '損失'と '精度'を再評価するでしょうか? – deeplearning

関連する問題