[ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用

方法一:一步保存模型结构与参数。

○模型保存:    

    (1)、使用 model.save('模型名称') 命令。

    [ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第1张图片

    (2) 运行程序后会在工程目录下生成 model.h5 文件。

    [ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第2张图片

○模型读取:

    (1)、在工程路径下导入模型文件,使用 load_model('model.h5') 。

    [ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第3张图片

    (2)、结果,发现和之前结果一样。

    [ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第4张图片

 

方法二:模型结构与参数分开保存。

○模型保存

    (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')

    [ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第5张图片

    [ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第6张图片

○模型还原

    (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')

[ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第7张图片

    [ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用_第8张图片

 

方法三:从Numpy中逐层导入权重。

关键代码: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

你可能感兴趣的:([ Keras ] ——基本使用:(1) 训练好的模型结构与参数的保存以及调用)