记录自定义标量

重新调整回归模型并记录自定义学习率。这是如何做:

使用创建文件编写器tf.summary.create_file_writer()。

定义自定义学习率功能。这将被传递给Keras LearningRateScheduler回调。

在学习率功能内,用于tf.summary.scalar()记录自定义学习率。

将LearningRateScheduler回调传递给Model.fit()。

通常,要记录自定义标量,您需要使用tf.summary.scalar()文件编写器。文件编写器负责将此运行的数据写入指定的目录,并在使用时隐式使用tf.summary.scalar()。

设置学习速率

1
2
3
4
5
6
7
8
9
10
11
12
13
file_writer = tf.summary.create_file_writer(log_dir+'/lr')#创建文件编辑器
file_writer.set_as_default()
def lr_sch(epoch):
learning_rate = 0.2
if epoch>5:
learning_rate = 0.02
if epoch>10:
learning_rate = 0.01
if epoch>20:
learning_rate = 0.005
tf.summary.scalar('leaning_rate',data=learning_rate,step=epoch)
return learning_rate
lr_callback = tf.keras.callbacks.LearningRateScheduler(lr_sch)#设置学习速率回调函数

设置Tensorboard

1
2
3
4
import os
log_dir = os.path.join('logs',datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir,histogram_freq=1)#回调函数
#histogram_freq: 对于模型中各个层计算激活值和模型权重直方图的频率(训练轮数中)。 如果设置成 0 ,直方图不会被计算。对于直方图可视化的验证数据(或分离数据)一定要明确的指出。

设置回调函数

1
2
3
4
5
6
7
8
model.fit(dataset,
epochs=25,
steps_per_epoch=60000//128,
validation_data=test_dataset,
validation_steps=10000//128,
callbacks=[tensorboard_callback,lr_callback]#回调函数,传入tensorboard和学习速率
)