Keras模型加载之通过json文件

导入图
  • model_from_json
导入权重
  • load_weights
  • Note: load_weights没有返回值,千万不要model=model.load_weights(path)
代码示例
import numpy as np
from keras.models import Model, load_model
from keras.models import model_from_json
import json

json_file = '/path/to/model.json'
with open(json_file, 'r') as f:
    json_str = f.read()

## NOTE: 因为模型中有自定义的模块,所以导入json的时候需要添加一个参数custom_objects,一般情况下是不用加的
model = model_from_json(json_str, custom_objects={'BilinearUpSampling2D': BilinearUpSampling2D})
print(type(model))

## NOTE:注意可以只加载weights中有的一些权重,没有的就跳过,可以通过by_name参数实现
model.load_weights(
    '/path/to/AtrousFCN_Resnet50_16sweights.01-0.74.hdf5',
    by_name=True)
print("Load model sucess *****")
使用预编译的Keras模型可以避免每次启动时重新编译模型,从而加快模型加载速度。下面是使用预编译的Keras模型的步骤: 1. 训练模型时,在模型编译的过程中指定保存模型结构和参数的路径,如下所示: ```python model.compile(loss='categorical_crossentropy', optimizer='adam') model.save('my_model.h5') ``` 2. 加载模型时,使用Keras提供的load_model函数加载预编译的模型,如下所示: ```python from keras.models import load_model model = load_model('my_model.h5') ``` 在加载模型时,Keras会自动读取保存的模型结构和参数,并将其恢复到内存中。 3. 对于使用自定义层或损失函数的模型,需要在加载模型之前将自定义层或损失函数定义在代码中,如下所示: ```python from keras.models import load_model from custom_layers import CustomLayer from custom_losses import custom_loss model = load_model('my_model.h5', custom_objects={'CustomLayer': CustomLayer, 'custom_loss': custom_loss}) ``` 在这个例子中,我们需要将自定义层CustomLayer和自定义损失函数custom_loss定义在代码中,并在加载模型时通过custom_objects参数告诉Keras如何加载这些自定义层和损失函数。 需要注意的是,使用预编译的Keras模型可能会导致模型的可移植性降低,因为预编译的模型可能会依赖于特定的Keras版本和后端。如果你需要在不同的环境中部署模型,可以使用Keras提供的保存模型结构和参数分开的方式,即使用model.save_weights()保存模型参数,使用model.to_json()保存模型结构,并在加载模型时通过load_weights()和model_from_json()分别加载模型参数和结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值