【问题标题】:Is it better in keras to save a model or to save only the weights?在keras中保存模型还是只保存权重更好?
【发布时间】:2019-12-27 07:09:58
【问题描述】:

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

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

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

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

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

    因此,load_model ~ load_weights,其中load_model 操作等于load_weights + load_json_architecture。

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

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

    【讨论】:

      【解决方案2】:

      load_model 方法将立即加载模型及其架构。在一行代码中,却是内存消耗。另一方面 load_weights 只加载没有架构的权重。因此,要在每次使用权重时消耗更少的内存,请从头开始创建模型,然后调用 load_weights 方法。

      【讨论】:

        猜你喜欢
        • 2019-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2018-08-03
        • 1970-01-01
        • 1970-01-01
        • 2018-09-22
        相关资源
        最近更新 更多