如何从冻结的 TensorFlow 图中创建一个 Op?

How to make an Op from a frozen TensorFlow graph?

如何从冻结的 TensorFlow 图表中创建 Op?和 TF Hub 一样的技巧?

with tf.Graph().as_default():
  module_url = "https://tfhub.dev/google/nnlm-en-dim128-with-normalization/1"
  embed = hub.Module(module_url)
  embeddings = embed(["A long sentence", "A sentence"])

来自 TF Hub 的 embed() 可以作为自定义操作在图中的任何位置自由使用。我正在寻找相同的东西,只是不使用 module_url,而是使用我自己的 .pb 文件中的冻结图。在导入的图的末尾添加操作,或者编辑图很容易,但是使用导入的图作为自定义操作要清晰得多。

我看过 TF Hub 的实现,但它不是太简洁。而且看起来没有其他示例代码。拜托,有人可以提供或指出更好的示例代码吗?

如上所述在对 embed(...) 的调用中应用 hub.Module 会引入一个完整的子图,其中包含许多 TF 操作。它在 Python 代码中看起来是独立的,因为所有工作都隐藏在单个函数调用中,但这里不涉及自定义操作。

也许您可以通过创建自己的 hub.Module 来满足您的需求?这并不难,请参阅 tensorflow.org/hub/creating,您可以从您的文件系统中使用它。

关于如何使用 tf.import_meta_graph()(包括 tf.Graph 的集合并支持检查点变量)或更基本的 tf.import_graph_def()(常用于冻结图 defs,例如 label_image.py),但 hub.Module 为您处理了这些旧方法中的许多差距和细微问题。