修改 tensorflow savedmodel pb 文件以使用自定义操作进行推理

Posted

技术标签:

【中文标题】修改 tensorflow savedmodel pb 文件以使用自定义操作进行推理【英文标题】:modifying a tensorflow savedmodel pb file for inference with a custom op 【发布时间】:2021-10-27 03:43:10 【问题描述】:

我有一个用 Python 训练的 Tensorflow 模型,导出到 .pb 文件,然后与 Tensorflow Serving 一起使用。

我编写了一个自定义操作,可以大大加快此 TensorFlow 模型中某些运算符的推理速度,但仅适用于推理——我无法在训练期间使用此自定义操作。

我想知道我是否可以在 Tensorflow 服务中将此自定义操作与 .pb 文件一起使用。我想我可能必须编辑 .pb 文件,以便它使用我的自定义操作代替原始操作,然后 Tensorflow 服务应该继续寻找我可以链接到其运行时的自定义操作实现。

那么——如何修改 Tensorflow .pb 文件并换出运算符?有没有我可以参考的示例代码?

【问题讨论】:

【参考方案1】:

如果您由于某种原因无法使用原始操作进行训练,那么您最好的选择可能是原型手术。我会寻找一些工具,让您将 proto 转换为 ascii 格式,对其进行修改,然后将其转换回二进制格式。我发现 this 有人为保存的模型这样做。然后,您可以在顶部编写工具以尝试用您的自定义操作替换。

【讨论】:

有一些问题:我相信这种方式不会保留所有 tf​​ 服务相关的签名和标签。

以上是关于修改 tensorflow savedmodel pb 文件以使用自定义操作进行推理的主要内容,如果未能解决你的问题,请参考以下文章

升级 TensorFlow 模型或重新训练 SavedModel

如何将 TensorRT SavedModel 加载到 TensorFlow Estimator?

Using Tensorflow SavedModel Format to Save and Do Predictions

将 Tensorflow Keras 模型(编码器 - 解码器)保存为 SavedModel 格式

将 Google 的 SavedModel 转换为 Apple 的 mlmodel

如何使用 export_savedmodel 函数导出 Estimator 模型