在张量流中提取子图

Xyz*_*Xyz 6 machine-learning tensorflow

我有预训练的网络,我正在尝试获取它的一部分(子图)tf 图以及变量和保护程序对象。

这就是我的做法:

subgraph = tf.graph_util.extract_sub_graph(default_graph, list of nodes to preserve)
tf.reset_default_graph()
tf.import_graph_def(subgraph)
Run Code Online (Sandbox Code Playgroud)

然而,这会删除所有变量(当我调用 reset_default_graph 时)。即使我明确地将变量的操作节点(仅“变量”类型操作)添加到“要保留的节点列表”中。

如何在保留变量值的同时保留较大图的子图?是否需要添加一些新节点来“保留列表”?

图节点和变量之间的关系对我来说仍然不清楚,教程只提到创建变量会在图中创建一些操作(节点)。

Yao*_*ang 0

我认为你所做的看起来是正确的。正如您所说,变量只是一个输出特定值的张量的操作(图中的节点)。您应该能够将变量节点添加到列表中以保留它们,就像您已经做的那样。您可以使用 print(sess.graph_def) 确保您提供的名称正确吗?

  • 我刚刚遇到这个函数convert_variables_to_constants,这可能有助于简化解决方案:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/graph_util_impl.py#L178 (2认同)