Tensorflow张力板不显示acc、loss、acc_val和loss_val仅显示历元精度和历元损失

Tensorflow张力板不显示acc、loss、acc_val和loss_val仅显示历元精度和历元损失,tensorflow,machine-learning,keras,deep-learning,tensorboard,Tensorflow,Machine Learning,Keras,Deep Learning,Tensorboard,我希望有一个对应于acc、loss、acc_val和loss_val的TensorBoard显示图,但由于某种原因它们不会出现。这是我看到的 我希望有这个: 我按照指示,能够在谷歌colab笔记本中使用tensorboard 这是用于生成张力板的代码: opt = tf.keras.optimizers.Adam(lr=0.001, decay=1e-6) tensorboard = TensorBoard(log_dir="logs/{}".format(NAME),

我希望有一个对应于acc、loss、acc_val和loss_val的TensorBoard显示图,但由于某种原因它们不会出现。这是我看到的

我希望有这个:

我按照指示,能够在谷歌colab笔记本中使用tensorboard

这是用于生成张力板的代码:

opt = tf.keras.optimizers.Adam(lr=0.001, decay=1e-6)

tensorboard = TensorBoard(log_dir="logs/{}".format(NAME), 
                          histogram_freq=1, 
                          write_graph=True, 
                          write_grads=True, 
                          batch_size=BATCH_SIZE, 
                          write_images=True)

model.compile(
    loss='sparse_categorical_crossentropy',
    optimizer=opt,
    metrics=['accuracy']
)

# Train model
history = model.fit(
     train_x, train_y,
     batch_size=BATCH_SIZE,
     epochs=EPOCHS,
     validation_data=(validation_x, validation_y),
     callbacks=[tensorboard]
)

我如何着手解决这个问题?有什么想法吗?非常感谢你的帮助

这就是我们想要的行为。如果要记录自定义标量(如动态学习率),则需要使用TensorFlow摘要API

重新训练回归模型并记录自定义学习率。以下是方法:

使用tf.summary.Create_file_writer创建文件编写器。 定义自定义学习速率函数。这将传递给Keras LearningRateScheduler回调。 在learning rate函数中,使用tf.summary.scalar记录自定义学习速率。 将LearningRateScheduler回调传递给Model.fit。 通常,要记录自定义标量,需要将tf.summary.scalar与文件编写器一起使用。文件编写器负责将此运行的数据写入指定目录,并在使用tf.summary.scalar时隐式使用


嘿我真的很感谢你花时间回复!然而,我有点困惑。我不希望实现动态学习率。我正在寻找acc、loss、acc_val和loss_val的图表。我已经更新了我的问题,包括我希望做的事情,以便事情更加清楚!
logdir = "logs/scalars/" + datetime.now().strftime("%Y%m%d-%H%M%S")
file_writer = tf.summary.create_file_writer(logdir + "/metrics")
file_writer.set_as_default()

def lr_schedule(epoch):
  """
  Returns a custom learning rate that decreases as epochs progress.
  """
  learning_rate = 0.2
  if epoch > 10:
    learning_rate = 0.02
  if epoch > 20:
    learning_rate = 0.01
  if epoch > 50:
    learning_rate = 0.005

  tf.summary.scalar('learning rate', data=learning_rate, step=epoch)
  return learning_rate

lr_callback = keras.callbacks.LearningRateScheduler(lr_schedule)
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

model = keras.models.Sequential([
    keras.layers.Dense(16, input_dim=1),
    keras.layers.Dense(1),
])

model.compile(
    loss='mse', # keras.losses.mean_squared_error
    optimizer=keras.optimizers.SGD(),
)

training_history = model.fit(
    x_train, # input
    y_train, # output
    batch_size=train_size,
    verbose=0, # Suppress chatty output; use Tensorboard instead
    epochs=100,
    validation_data=(x_test, y_test),
    callbacks=[tensorboard_callback, lr_callback],
)