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

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

○模型保存:    

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

    

 

方法三:从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

  • 10
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值