我正在寻找一个TensorBoard显示图,它们对应于acc,loss,acc_val和loss_val,但是由于某些原因它们没有出现。这就是我所看到的。
我正在按照说明here能够在google colab笔记本中使用张量板
这是用于生成张量板的代码:
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()
创建文件编写器。LearningRateScheduler
回调。tf.summary.scalar()
记录自定义学习率。LearningRateScheduler
回调传递给Model.fit()
。通常,要记录自定义标量,需要将tf.summary.scalar()
与文件编写器一起使用。文件编写器负责将此运行的数据写入指定的目录,并在使用tf.summary.scalar()
时隐式使用。
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],
)