使用model.save(filepath)将Keras模型和权重保存在一个HDF5文件中,该文件将包含:
模型的结构,以便重构该模型
模型的权重
训练配置(损失函数,优化器等)
优化器的状态,以便于从上次训练中断的地方开始
使用keras.models.load_model(filepath)来重新实例化你的模型,如果文件中存储了训练配置的话,该函数还会同时完成模型的编译
只保存模型结构,而不包含其权重或配置信息
#保存成json格式的文件
# save as JSON
json_string = model.to_json()
open('my_model_architecture.json','w').write(json_string)
from keras.models import model_from_json
model = model_from_json(open('my_model_architecture.json').read())
#保存成yaml文件
# save as YAML
yaml_string = model.to_yaml()
open('my_model_architectrue.yaml','w').write(yaml_string)
from keras.models import model_from_yaml
model = model_from_yaml(open('my_model_architecture.yaml').read())
#这项操作将把模型序列化为json或yaml文件,这些文件对人而言也是友好的,如果需要的话你甚至可以手动打开这些文件并进行编辑。当然,你也可以从保存好的json文件或yaml文件中载入模型:
# model reconstruction from JSON:
from keras.modelsimport model_from_json
model = model_from_json(json_string)
# model reconstruction from YAML
model =model_from_yaml(yaml_string)
需要保存模型的权重
import keras.models import load_model
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)
open('my_model_architecture.json','w').write(json_string)
model.save_weights('my_model_weights.h5')
model = model_from_json(open('my_model_architecture.json').read())
model.load_weights('my_model_weights.h5')
实时保存模型结构、训练出来的权重、及优化器状态并调用
keras 的callback参数可以帮助我们实现在训练过程中的适当时机被调用。实现实时保存训练模型以及训练参数
keras.callbacks.ModelCheckpoint(
filepath,
monitor='val_loss',
verbose=0,
save_best_only=False,
save_weights_only=False,
mode='auto',
period=1
)
1. filename:字符串,保存模型的路径