【问题标题】:Why does keras model get bigger after training?为什么keras模型训练后会变大?
【发布时间】:2019-11-25 05:51:56
【问题描述】:

我注意到我使用tensorflow.keras.Sequential() 创建了一个模型,保存它并且文件大小约为5 MiB,但在我调用model.fit(..) 后,文件大小增加到17 MiB。我复制了模型以减小文件大小,并看到准确性是相同的。

我的问题是,fit() 产生的额外 12 MiB 的内容究竟是什么? 如何访问此类内容?如果我删除那些额外的 12 MiB,它会影响预测准确性或任何奇怪的副作用吗?

在这里查看我的实验代码:https://nbviewer.jupyter.org/github/off99555/TensorFlowExperiments/blob/master/test-save-keras-model.ipynb

【问题讨论】:

    标签: python tensorflow keras deep-learning


    【解决方案1】:

    答案是 Adam 优化器状态的大小。当我将优化器更改为 SGD(香草优化器)时,大小不再大了。 据我所知,Adam 优化器维护先前训练迭代的梯度信息。梯度大小可以和模型大小一样大。这就是为什么它会导致文件大小如此之大。

    考虑到这一点,当你保存你的模型时,如果你似乎使用了一个像 Adam 一样保持大状态的优化器,请确保设置 include_optimizer=False

    但请注意,这意味着您无法加载模型并继续对其进行再次训练,它只能用于推理。

    【讨论】:

    • "无法加载模型并再次继续训练" - false;您只需要再次致电.compile()。然而,这可能会破坏训练性能,因为矩信息对于下一次拟合迭代可能很重要——在这种情况下,建议使用预热。
    • 是的。这是假的。但是我很清楚你可以再次编译,这会影响训练性能。这就是为什么我不建议再这样训练它的原因。如果您想继续训练,使用优化器保存会更有意义。
    猜你喜欢
    • 2017-09-28
    • 2018-01-29
    • 2019-12-19
    • 2018-04-15
    • 2017-10-25
    • 2022-12-04
    • 2019-02-20
    • 2020-12-18
    • 2018-08-21
    相关资源
    最近更新 更多