Keras模型儲存筆記
阿新 • • 發佈:2018-12-18
整理自Keras官方文件
https://keras-cn.readthedocs.io/en/latest/for_beginners/FAQ/#save_model
https://keras-cn.readthedocs.io/en/latest/other/callbacks/
1.Keras儲存訓練好的模型 1) 使用model.save(filepath)將Keras模型和權重儲存在一個HDF5檔案中,該檔案將包含: 模型的結構,以便重構該模型 模型的權重 訓練配置(損失函式,優化器等) 優化器的狀態,以便於從上次訓練中斷的地方開始 使用keras.models.load_model(filepath)來重新例項化你的模型,如果檔案中儲存了訓練配置的話,該函式還會同時完成模型的編譯
from keras.models import load_model
model.save('my_model.h5') # creates a HDF5 file 'my_model.h5'
del model # deletes the existing model# returns a compiled model
# identical to the previous one
model = load_model('my_model.h5')
2) 只儲存模型的結構,而不包含其權重或配置資訊:
# save as JSON json_string = model.to_json() # save as YAML yaml_string = model.to_yaml() # model reconstruction from JSON: from keras.models import model_from_json model = model_from_json(json_string) # model reconstruction from YAML model = model_from_yaml(yaml_string)
3) 只儲存模型的權重 model.save_weights('my_model_weights.h5')
# 初始化一個完全相同的模型 model.load_weights('my_model_weights.h5')
# 載入權重到不同的網路結構(有些層一樣)中,例如fine-tune # 或transfer-learning,可以通過層名字來載入模型:model.load_weights('my_model_weights.h5', by_name=True) 2.Keras儲存checkpoint
from keras.callbacks import ModelCheckpoint checkpointer = ModelCheckpoint(filepath="checkpoint-{epoch:02d}e -val_acc_{val_acc:.2f}.hdf5", save_best_only=True, verbose=1, period=50) model.fit(data, labels, epochs=10, batch_size=32, callbacks=[checkpointer]) #callbacks為一個list,可有多個回撥函式
filepath:checkpoint儲存路徑,上面加入了變數值來命名
verbose:資訊展示模式,0或1
save_best_only:當設定為True時,將只儲存在驗證集上效能最好的模型,設為True避免儲存過多不必要的模型
period:CheckPoint之間的間隔的epoch數,可避免訓練前期儲存不必要的模型
儲存的checkpoint,可以直接作為 1. 1) 中儲存的model呼叫,用來分類
model = load_model('checkpoint-05e-val_acc_0.58.hdf5')
也可以作為繼續訓練之前載入權重