首页 > 解决方案 > 在keras中保存模型还是只保存权重更好?

问题描述

我有一个类和子类的列表,因为它们仅在最后一层就有大约 700 个类,我认为单独训练每组类会更好。但是在我训练它们并能够一起使用它们之后,我发现我加载的模型越多,它就越会消耗内存。据我所知,使用 Keras 只有两种选择,一种是使用加载模型,另一种是仅加载模型权重。问题是我看到内存几乎没有变化,两者都使用相同数量的内存。如何加载消耗更少内存的模型?

标签: tensorflowkeras

解决方案


内存消耗在很大程度上取决于模型的架构。

不同的加载类型几乎没有区别,因为真正消耗内存的加载操作是权重加载,可能有数百万个浮点数。

load_model实际上,您无需编写单独的代码来加载模型的架构(一个描述模型架构的 json 文件)。

因此,load_model ~ load_weights,其中load_model运算等于load_weights + load_json_architecture

您无法使用上述解决方案加载消耗较少内存的模型。

您可以做的是使用模型修剪/训练后量化,从而减少内存消耗。


推荐阅读