如何将训练好的网络进行保存以便以后使用, 进行后续的研究呢?
首先,定义一个简单的LSTM模型:
from keras.models import Sequential
from keras.layers import LSTM, Dense
model = Sequential()
model.add(LSTM(4,input_shape=(1,8)))
model.add(Dense(1))
整体保存模型及参数
首先,安装python的h5py包.
sudo pip3 install h5py
之后调用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')
只保存模型的结构
可以用model.to_jason()将模型序列化保存为json文件.
# save as JSON
json_string = model.to_json()
例如上面LSTM网络的json_string就是:
json_string
Out[10]: '{
"class_name": "Sequential", "config": [{
"class_name": "LSTM",