1. 程式人生 > >Keras模型儲存筆記

Keras模型儲存筆記

整理自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')

也可以作為繼續訓練之前載入權重