Keras h5 到 2019 年的 Tensorflow 服务?

Keras h5 to Tensorflow serving in 2019?

我尝试按照本教程学习如何转换 Keras H5 模型 zu ProtoBuff 并使用 Tensorflow Serve 为它提供服务: https://towardsdatascience.com/deploying-keras-models-using-tensorflow-serving-and-flask-508ba00f1037

网络上的许多其他资源中的该教程使用 "tf.saved_model.simple_save",现已弃用并删除(2019 年 3 月)。 使用 freeze_session 将 h5 转换为 pb,如下所示:

似乎遗漏了一个 "serve" 标签,因为 tensorflow_model_server 输出:

Loading servable: {name: ImageClassifier version: 1} failed: Not found: Could not find meta graph def matching supplied tags: { serve }. To inspect available tag-sets in the SavedModel, please use the SavedModel CLI: saved_model_cli

用saved_model_cli检查了一下,没有标签。

如今 tensorflow_server 可以使用 h5 模型的方法是什么?

注意:这适用于 TF 2.0+

我假设您在 model.h5 中有 Keras 模型。 首先,只需使用 tensorflow 的 Keras 实现加载模型:

from tensorflow import keras
model = keras.models.load_model('model.h5')

然后,只需导出一个 SavedModel

keras.experimental.export_saved_model(model, 'path_to_saved_model')

最后,应用您通常希望从 SavedModel.pb 推理文件的任何转换(例如:冻结、推理优化等)

您可以在 TF official guide for saving and serializing models in TF 2.0

中获得更多详细信息和完整示例