本例中介紹了 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')