Python Keras中的加载模型所需时间呈指数增长
我有一系列以hdf5格式保存的Keras模型(包括结构和重量)。这些模型基于预先训练的数据集,并通过自定义数据集进行了进一步的微调 对于生产使用,我需要同时将所有这些模型加载到内存中Python Keras中的加载模型所需时间呈指数增长,python,tensorflow,keras,Python,Tensorflow,Keras,我有一系列以hdf5格式保存的Keras模型(包括结构和重量)。这些模型基于预先训练的数据集,并通过自定义数据集进行了进一步的微调 对于生产使用,我需要同时将所有这些模型加载到内存中 从keras.models导入负载模型 型号名称=[‘鸟’、‘猫’、‘狗’、‘电话’] 模型=dict() 对于模型_名称中的名称: 路径='models/{}.h5'。格式(名称) m=负载_模型(路径) 型号[名称]=m 加载的模型越多,加载时间似乎就越长。指示值为: 装载鸟类需要1分钟。h5 加载Cat.
从keras.models导入负载模型
型号名称=[‘鸟’、‘猫’、‘狗’、‘电话’]
模型=dict()
对于模型_名称中的名称:
路径='models/{}.h5'。格式(名称)
m=负载_模型(路径)
型号[名称]=m
加载的模型越多,加载时间似乎就越长。指示值为:
- 装载
鸟类需要1分钟。h5
- 加载Cat.h5需要5分钟
- 加载
狗需要7分钟。h5
- 加载
手机需要15分钟。h5
p2.xlarge
实例上运行它,该实例配备了一个GPU
问题:
- 为什么加载时间会随着已加载模型的数量而增长
- 这是正常的还是我做错了什么
- 如何提高总体加载时间
- 这不是一个经过验证的答案,我在这里根据上面的评论详细说明,供您测试
将4个模型合并为一个模型
怎么做?
加载它们并一直等待(这仍然不是生产)
现在:
保存此
common_model
,查看在新会话中加载所需的时间
您可以使用
common\u model.layers[i]
从中检索每个模型。请参见摘要中的哪个i
是哪个层。如果使用名称定义子模型,则更容易:common\u model.get\u layer(model\u name)
您可以尝试一种时髦的方法,即:用一个输入将四个模型连接到一个模型中(用输入调用每个模型,并从这个输入创建一个模型到每个输出)。保存此模型并查看其加载是否正常。您可以稍后从中检索每个模型。@DanielMöller听起来很有趣,但我不确定我是否完全遵循了。你能再详细一点吗?好的,现在它非常有意义。我要试试这个。
common_input = Input(compatible_shape) #assuming all models have similar inputs
outputs = []
for name in models:
outputs.append(models[name](common_input))
common_model = Model(common_input, outputs)