在 Keras 中保存最佳模型和权重(在单个文件中)
Saving just model & weights in Keras (in single file)
我有 Python 使用 Keras 生成深度卷积神经网络的代码。我正在尝试保存模型,但结果是巨大的(数百 MB)。我想把它缩减一点,使它更易于管理。
问题是 model.save()
存储(引用 Keras FAQ):
- 模型的架构,允许重新创建模型
- 模型的权重
- 训练配置(损失、优化器)
- 优化器的状态,允许从您停止的地方恢复训练。
如果我不再做任何训练,我想我只需要前两个。
我可以使用 model.to_json()
制作架构的 JSON 字符串并将其保存,然后 model.save_weights()
制作包含权重的单独文件。这大约是完整 model.save()
结果的三分之一。但我想知道是否有某种方法可以将它们存储在一个独立的文件中? (除了输出两个文件,将它们压缩在一起,然后删除原件。)或者,也许有一种方法可以在训练完成后删除训练配置和优化器状态,这样 model.save()
几乎不会给我任何东西这么大?
谢谢。
Model 的 save 函数有一个参数,叫做 include_optimizer,将它设置为 false 将保存模型而不包括优化器状态,这应该会导致更小的HDF5 文件:
model.save("something.hdf5", include_optimizer=False)
我有 Python 使用 Keras 生成深度卷积神经网络的代码。我正在尝试保存模型,但结果是巨大的(数百 MB)。我想把它缩减一点,使它更易于管理。
问题是 model.save()
存储(引用 Keras FAQ):
- 模型的架构,允许重新创建模型
- 模型的权重
- 训练配置(损失、优化器)
- 优化器的状态,允许从您停止的地方恢复训练。
如果我不再做任何训练,我想我只需要前两个。
我可以使用 model.to_json()
制作架构的 JSON 字符串并将其保存,然后 model.save_weights()
制作包含权重的单独文件。这大约是完整 model.save()
结果的三分之一。但我想知道是否有某种方法可以将它们存储在一个独立的文件中? (除了输出两个文件,将它们压缩在一起,然后删除原件。)或者,也许有一种方法可以在训练完成后删除训练配置和优化器状态,这样 model.save()
几乎不会给我任何东西这么大?
谢谢。
Model 的 save 函数有一个参数,叫做 include_optimizer,将它设置为 false 将保存模型而不包括优化器状态,这应该会导致更小的HDF5 文件:
model.save("something.hdf5", include_optimizer=False)