Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 如何使用tensorboard将我的培训和验证准确性合并到一个图形中_Tensorflow_Tensorboard - Fatal编程技术网

Tensorflow 如何使用tensorboard将我的培训和验证准确性合并到一个图形中

Tensorflow 如何使用tensorboard将我的培训和验证准确性合并到一个图形中,tensorflow,tensorboard,Tensorflow,Tensorboard,tensorboard显示了每个步骤的训练和验证精度的多个图形,我希望它在单个图形上显示两个精度的变化 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 sessi

tensorboard显示了每个步骤的训练和验证精度的多个图形,我希望它在单个图形上显示两个精度的变化

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()
结果
tensorboard在不同图形上显示多个训练和验证精度的图像

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

...
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()

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

...
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()

每次调用
tf.summary.scalar()
都会在图形中定义一个新的op,因此由于您在列车循环中调用它,每次迭代都会生成一个不同的摘要op,每个op都有不同的
\u 1
\u 2
等后缀,这会导致TensorBoard中出现许多不同的绘图

如果您刚刚开始,我建议您试用KerasAPI或使用急切执行,这两种方法都可以更容易地避免这个问题


如果需要显式地使用graph+会话模型,那么整个图应该提前构建,包括精度计算(转换为TensorFlow ops,而不是numpy)、记录精度的
tf.summary.scalar()
调用,最后是
tf.summary.merge\u all()
op。然后在训练循环中,您只需执行
sess.run()
writer.add_summary()
、和
writer.flush()
tf.summary.scalar()
的每次调用都会在图中定义一个新的op,因此,既然您在训练循环中调用它,每次迭代都会生成一个不同的摘要op,每个op都有不同的
\u 1
\u 2
等后缀,这会在TensorBoard中生成许多不同的图

如果您刚刚开始,我建议您试用KerasAPI或使用急切执行,这两种方法都可以更容易地避免这个问题

如果需要显式地使用graph+会话模型,那么整个图应该提前构建,包括精度计算(转换为TensorFlow ops,而不是numpy)、记录精度的
tf.summary.scalar()
调用,最后是
tf.summary.merge\u all()
op。然后在训练循环中,您只需执行
sess.run()
writer.add\u summary()
、和
writer.flush()