【问题标题】:how to merge my training and validation accuracy in one graph using tensorboard如何使用张量板将我的训练和验证准确性合并到一张图中
【发布时间】:2019-07-15 08:51:24
【问题描述】:

张量板显示了每个步骤的训练和验证准确性的多个图表,我希望它在单个图表上显示两个准确性的变化。

def accuracy(predictions, labels):
 return (100.0 * np.sum(np.argmax(predictions, 1) == np.argmax(labels, 1))
      / predictions.shape[0])

num_steps = 20000
with tf.Session(graph = graph) as session:
  tf.global_variables_initializer().run()
  print(loss.eval())    
  summary_op = tf.summary.merge_all()
  summaries_dir = '/loggg/'
  train_writer = tf.summary.FileWriter(summaries_dir, graph)
  for step in range(num_steps):
    _,l, predictions = session.run([optimizer, loss, predict_train])

    if (step % 2000 == 0):
          #print(predictions[3:6])                
          print('Loss at step %d: %f' % (step, l))
          training = accuracy( predictions, y_train[:, :])
          validation = accuracy(predict_valid.eval(), y_test)
          print('Training accuracy: %.1f%%' % training)
          print('Validation accuracy: %.1f%%' % validation)
          accuracy_summary = tf.summary.scalar("Training_Accuracy", training)
          validation_summary = tf.summary.scalar("Validation_Accuracy", validation)                                        
          Result = session.run(summary_op)
          train_writer.add_summary(Result, step)
          train_writer.close()

结果 张量板图像显示不同图表上的多个训练和验证准确度

【问题讨论】:

    标签: tensorflow tensorboard


    【解决方案1】:

    tf.summary.scalar() 的每次调用都会在图中定义一个新操作,因此由于您在训练循环中调用它,因此每次迭代都会生成一个不同的摘要操作,每个操作都有不同的_1_2 等. 后缀,这会在 TensorBoard 中产生许多不同的图。

    如果您刚刚开始,我建议您尝试 Keras API 或使用 Eager Execution,这两种方法都可以更轻松地避免此问题。

    如果您需要显式使用图 + 会话模型,则应预先构建整个图,包括准确度计算(转换为 TensorFlow ops,而不是 numpy),tf.summary.scalar() 调用以记录准确度,最后是tf.summary.merge_all() 操作。然后在训练循环中你只会做sess.run()writer.add_summary()writer.flush()

    【讨论】:

      【解决方案2】:

      我不完全理解你的代码,但我是这样做的:

      ...
      correct_predict=tf.equal(tf.argmax(logits,1),tf.argmax(y,1))
      accuracy=tf.reduce_mean(tf.cast(correct_predict,tf.float32))
      tf.summary.scalar("acc", accuracy)
      ...
      write_op = tf.summary.merge_all()
      ...
      with tf.Session() as sess:
          writer = tf.summary.FileWriter("graph/", sess.graph)
          ...
             if step%10==0:
                 summ=sess.run(write_op,feed_dict={x:x_test,y:y_test})
                 writer.add_summary(summ,step)
                 writer.flush()
      

      【讨论】:

        猜你喜欢
        • 2020-09-05
        • 2023-03-24
        • 2016-04-01
        • 2020-10-12
        • 2017-09-29
        • 2016-06-01
        • 2022-07-22
        • 1970-01-01
        • 2018-10-18
        相关资源
        最近更新 更多