TF2 中的 export_saved_model 是否也保存权重?

does export_saved_model from TF2 save also weights?

我使用最新的 TF2.0a 创建、编译并拟合了一个 tf.keras 的模型。 现在我想将其保存为pb,以供以后用于推理。

我使用:

import time
saved_model_path = "./models/pb/experimental/{}".format(int(time.time()))

tf.keras.experimental.export_saved_model(model, saved_model_path)
saved_model_path

here 在第 点下被很好地描述为 saved_model

model是我之前的模型created/compiled/fitted

现在我的问题,

  1. export_saved_model 如何知道要保存哪些权重?或者它是否保存了上一个纪元的权重?

  2. 按照这个逻辑,最好从你的检查点加载最好的模型,然后使用导出功能?

  3. 补充问题:是否有一个回调函数作为来自keras的modelcheckpoint但具有此导出功能?创建最佳模型的 pb 文件。

你可以在这里看看:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/keras/saving/saved_model.py

1) Keras 保存了带有最后一个检查点的模型,这实际上是最后一个epoch 的权重。

引用来源:

The SavedModel contains:

  1. a checkpoint containing the model weights.

  2. a SavedModel proto containing the Tensorflow backend graph. Separate graphs are saved for prediction (serving), train, and evaluation. If the model has not been compiled, then only the graph computing predictions will be exported.

  3. the model's json config. If the model is subclassed, this will only be included if the model's get_config() method is overwritten.

2) 在我看来,最好的方法是在保存和加载时始终将模型架构和权重分开。换句话说:是的,加载最佳模型的权重。

3) 不,现在没有将整个模型导出到 pb 的回调。因此,要么使用 "ModelCheckpoint" 回调并在之后加载最佳权重,要么使用 "LambdaCallback".

构建您自己的回调

希望对您有所帮助!