○模型保存:
(1)、使用 model.save('模型名称') 命令。
(2) 运行程序后会在工程目录下生成 model.h5 文件。
○模型读取:
(1)、在工程路径下导入模型文件,使用 load_model('model.h5') 。
(2)、结果,发现和之前结果一样。
○模型保存
(1)、使用这两个命令保存网络结构。相应在工程目录下会生成 my_model_architecture.json 文件
json_string = model.to_json()
open('my_model_architecture.json', 'w').write(json_string)
(2)、使用这个命令保存网络的参数。相应在工程目录下会生成 my_model_weights.h5 文件
model.save_weights('my_model_weights.h5')
○模型还原
(1)通过下面语句读取结构。
from keras.models import model_from_json
model = model_from_json(open('my_model_architecture.json').read())
(2)通过下面语句读取参数。(注,参数读取语句需要在模型 compile 之后)
model.load_weights('my_model_weights.h5')
关键代码:
http://keras-cn.readthedocs.io/en/latest/layers/about_layer/
layer.get_weights() # 返回层的权重(numpy array)
layer.set_weights(weights) # 从numpy array中将权重加载到该层中,要求numpy array的形状与* layer.get_weights()的形状相同
逐层导入的代码思想:(参考:参考来源)
assert os.path.exists(weights_path), 'Model weights not found (see "weights_path" variable in script).'
f = h5py.File(weights_path)
for k in range(f.attrs['nb_layers']):
if k >= len(model.layers):
# we don't look at the last (fully-connected) layers in the savefile
break
g = f['layer_{}'.format(k)]
weights = [g['param_{}'.format(p)] for p in range(g.attrs['nb_params'])]
model.layers[k].set_weights(weights)
f.close()
print('Model loaded.')
[ 参考文献]
https://blog.csdn.net/cymy001/article/details/78647640
https://blog.csdn.net/baimafujinji/article/details/42110831
https://blog.csdn.net/baoyan2015/article/details/62040459