Keras 需要很长时间才能在 model.load() 之后进行第一次预测
Posted
技术标签:
【中文标题】Keras 需要很长时间才能在 model.load() 之后进行第一次预测【英文标题】:Keras taking very long time to make first prediction following model.load() 【发布时间】:2018-02-09 00:19:42 【问题描述】:我正在使用 model.load() 在 keras 中加载模型,并且发现第一个预测的计算时间比后续预测的计算时间长 10 倍以上,任何可能发生这种情况的想法或建议进行加载-将不胜感激初始化优先预测周期加速。
我正在使用带有 CPU 处理功能的 Tensorflow 后端。
感谢您的帮助, 拒绝
【问题讨论】:
你确定这是第一个需要这么多时间而不是加载的预测吗? “第一次预测”是什么意思?您是否多次运行model.predict()
?
我正在使用 model.load() 加载保存的模型,然后构建数据集并运行 model.predict(),然后修改数据集并运行另一个预测,然后修改数据集并运行另一个预测等。model.load 似乎很快完成,然后第一个预测大约需要 10 倍的时间来生成预测,因为每个后续预测。
如何修改数据集?您预测的所有数据集的大小是否相同?
是的,它是另一个相同大小的数据集
你能提供一个你在这种情况下使用的代码吗?
【参考方案1】:
好的,我找到了适合我的答案:
如果您同时加载多个模型,请不要使用 keras model.load 函数,请将您的结构保存为 json/yaml,将权重保存为 .h5,然后按照 keras 示例进行加载。
model.load 函数在处理少于 5 个模型时要快得多,但同时加载的模型越多,加载时间就会成倍增加。
同时加载 100 个模型时,从 json 加载和从 .h5 加载权重的速度提高了 10 倍,虽然在加载结构和权重方法时每个模型的速度有所放缓,但它是线性的而不是指数的,因此在加载多个模型时速度明显更快一次。
【讨论】:
您在这里谈论的是模型加载时间,但首先您是在抱怨 .predict 时间...我问是因为在我的情况下使用单个模型,第一次调用 model.predict 需要〜 5 秒,然后其他调用预测大约需要 0.9 秒...我想知道您是否找到了解决方案? 嗨 Stav,我找到的最佳解决方案是将模型初始化为一个对象,并让它在初始化时预测空值。很抱歉回复晚了,我希望这会有所帮助。如果您找到了加速第一个预测的更好方法,我也很想听听。 非常感谢! 这与第一次模型加载有关,而不是第一次预测时间。假设模型已经加载,预测时间必须计算为调用model.predict
•和加载load_model
所花费的时间。
耶。您的建议使我的 45 多个分类器加载速度更快。非常感谢。以上是关于Keras 需要很长时间才能在 model.load() 之后进行第一次预测的主要内容,如果未能解决你的问题,请参考以下文章
将视图插入表格 - 视图不需要很长时间才能运行 - 插入需要很长时间
Reachability 示例代码中的 SCNetworkReachabilityGetFlags 需要很长时间才能返回