【发布时间】:2018-05-07 09:55:33
【问题描述】:
我有一组 Keras 模型 (30),我使用以下方法训练和保存:
model.save('model{0}.h5'.format(n_model))
当我尝试使用load_model 加载它们时,每个模型所需的时间都非常大且递增。加载完成如下:
models = {}
for i in range(30):
start = time.time()
models[i] = load_model('model{0}.h5'.format(ix))
end = time.time()
print "Model {0}: seconds {1}".format(ix, end - start)
输出是:
...
Model 9: seconds 7.38966012001
Model 10: seconds 9.99283003807
Model 11: seconds 9.7262301445
Model 12: seconds 9.17000102997
Model 13: seconds 10.1657290459
Model 14: seconds 12.5914049149
Model 15: seconds 11.652477026
Model 16: seconds 12.0126030445
Model 17: seconds 14.3402299881
Model 18: seconds 14.3761711121
...
每个模型都非常简单:2 个隐藏层,每个隐藏层 10 个神经元(大小约为 50Kb)。为什么加载这么多,为什么时间增加?我是否遗漏了什么(例如模型的关闭功能?)
解决方案
我发现要加快模型的加载速度,最好将网络结构和权重存储到两个不同的文件中: 保存部分:
model.save_weights('model.h5')
model_json = model.to_json()
with open('model.json', "w") as json_file:
json_file.write(model_json)
json_file.close()
加载部分:
from keras.models import model_from_json
json_file = open("model.json", 'r')
loaded_model_json = json_file.read()
json_file.close()
model = model_from_json(loaded_model_json)
model.load_weights("model.h5")
【问题讨论】:
-
是theano吗?我对 theano 也有类似的问题...
-
不,是 TensorFlow,
-
你解决了吗?随着每个加载模型的时间增加,我遇到了完全相同的问题
-
是的,我更新了答案
-
如果使用
with,则无需关闭文件;您可以从保存部分中删除json_file.close()。
标签: python performance load keras