本例中介绍了 callbacks参数 、网络可视化工具、Application(提供了诸多已经训练好的模型,方便进行迁移学习)。
1.model.fit中的callbacks参数
callbacks参数 可以接收 回调函数。本例介绍几个简单的回调函数:
- TensorBoard: 训练可视化监控, 便于分析参数优化过程是否正常!
使用TensorBoard监控,方法就是,在model.fit中加入 回调函数TensorBoard 即可。
步骤1:定义回调函数TensorBoard.
from keras.callbacks import TensorBoard
tb = TensorBoard(log_dir = './logs', # log目录
histogram_freq = 1, # 按照几个epoch来计算直方图,0表示不计算
batch_size = 32, # 用多大量的数据计算直方图
write_graph = True, # 是否存储网络结构图
write_grads = False, # 是否可视化梯度直方图
write_images = False, # 是否可视化参数
embeddings_layer_names = None,
embeddings_metadata = None)
callbacks = [tb]
步骤2:在model.fit中加入 回调函数TensorBoard.
model.fit(x_train, y_train,
batch_size = 64,
epochs = 2,
verbose = 1,
validation_data = (x_test, y_test),
callbacks = callbacks)
步骤3:训练结束后,使用命令行tensorboard --logdir=./logs,回车后会显示 查看网址,直接复制粘贴到游览器即可 查看 训练过程.
假如 网址无法显示,那么如何解决?方案是,使用命令:tensorboard --logdir logs --host=127.0.0.1 再次生成 网址,然后再查看。
- ModelCheckpoint: 设置每个epoch存储一遍模型。
checkpoint = ModelCheckpoint(filepath='./model_ckpt.h5',
monitor = 'val_acc',
verbose = 1,
save_best_only = True)
# 调用
model.fit(X_train, Y_train, batch_size=128, callbacks=[checkpoint])
- LearningRateScheduler: 用来动态调整学习率
4)ReduceLROnPlateau: 用来在训练停滞不前的时候动态降低学习率
reducelr = ReduceLROnPlateau(monitor='val_loss',
factor=0.1,
patience=10,
mode='auto',
epsilon = 0.0001,
cooldown = 0,
min_lr = 0)
# 调用
model.fit(X_train, Y_train, batch_size=128, callbacks=[reducelr])
假如调用多个回调函数,举例如下:
# 调用
model.fit(X_train, Y_train,
batch_size=128,
callbacks=[checkpoint, reducelr])
5)EarlyStopping:当early stop被激活(如发现loss相比上1个epoch训练没有下降),则经过patience个epoch后停止训练。
EarlyStopping(monitor='val_loss',
patience = 0,
mode = 'auto')
2.网络可视化
网络可视化使用函数plot_model.
from keras.utils import plot_model
plot_model(model, to_file = 'model.png')