【问题标题】:Saving just model & weights in Keras (in single file)在 Keras 中仅保存模型和权重(在单个文件中)
【发布时间】:2018-09-22 00:37:24
【问题描述】:

我有使用 Keras 生成深度卷积神经网络的 Python 代码。我正在尝试保存模型,但结果是巨大的(100 MB)。我想减少一点以使事情更易于管理。

问题在于model.save() 存储(引用 Keras 常见问题解答):

  • 模型的架构,允许重新创建模型
  • 模型的权重
  • 训练配置(损失、优化器)
  • 优化器的状态,允许在您停止的地方恢复训练。

如果我不再进行培训,我想我只需要前两个。

我可以使用model.to_json() 制作架构的 JSON 字符串并将其保存,然后使用 model.save_weights() 制作包含权重的单独文件。这大约是完整 model.save() 结果大小的三分之一。但我想知道是否有某种方法可以将这些存储在一个独立的文件中? (输出两个文件,将它们压缩在一起,然后删除原件。)或者,也许有一种方法可以在训练完成时删除训练配置和优化器状态,​​这样model.save() 不会给我这么大的东西?

谢谢。

【问题讨论】:

    标签: python keras saving-data


    【解决方案1】:

    模型的save 函数有一个专门用于此的参数,称为 include_optimizer,将其设置为 false 将保存模型而不包括优化器状态,​​这会导致 HDF5 文件更小:

    model.save("something.hdf5", include_optimizer=False)
    

    【讨论】:

    • 谢谢你——工作得很好。除了......当我加载它时,有什么方法可以消除它的警告:“用户警告:在保存文件中找不到训练配置:模型未编译。手动编译。”
    • 加载时可以通过compile=False关键字避免警告:keras.models.load_model(name, compile=False)
    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2022-01-16
    • 2020-11-15
    相关资源
    最近更新 更多