【问题标题】:Tensorflow 2x: What exactly does the parameter include_optimizer affect in tensorflow.keras.save_modelTensorflow 2x:参数 include_optimizer 究竟对 tensorflow.keras.save_model 有什么影响
【发布时间】:2021-04-29 17:00:49
【问题描述】:
我一直在浏览tensorflow.keras.save_model() API 的文档,遇到了参数include_optimizer,我想知道不包含优化器的好处是什么,或者如果优化器不包含可能会出现什么问题t 与模型一起保存?
为了为我的特定用例提供更多上下文,我想保存一个模型,然后将生成的 .pb 文件与 Tensorflow Serving 一起使用。有什么理由我需要保存优化器状态,而不是保存它会减少结果文件的整体大小吗?如果我不保存,是不是模型在 TF 服务中无法正常工作?
【问题讨论】:
标签:
python
keras
deep-learning
tensorflow2.0
tensorflow-serving
【解决方案1】:
保存优化器状态将需要更多空间,因为优化器具有在训练期间调整的参数。对于一些优化器来说,这个空间可能很大,因为每个调整后的模型参数都会保存几个元参数。
保存优化器参数允许您以与保存检查点完全相同的状态重新开始训练,而在不保存优化器状态的情况下,即使是相同的模型参数也可能导致使用不同优化器参数的各种训练结果。
因此,如果您计划从保存的检查点继续训练模型,您可能还想保存优化器的状态。但是,如果您保存模型状态以供将来仅用于推理,则您不需要优化器状态来处理任何事情。根据您希望在 TF Serving 上部署模型的描述,听起来您只会对保存的模型进行推理,因此排除优化器是安全的。