我有预训练网络,我试图只获得它的一部分(子图)和变量以及保护对象。
这就是我的做法:
subgraph = tf.graph_util.extract_sub_graph(default_graph, list of nodes to preserve)
tf.reset_default_graph()
tf.import_graph_def(subgraph)
然而,这会删除所有变量(当我调用reset_default_graph时)。即使我明确地将变量的操作节点(仅“变量”类型操作)添加到“要保留的节点列表”中。
如何在保留变量值的同时保留较大图的子图? 是否需要添加一些“保留列表”的新节点?
图形节点和变量之间的关系对我来说仍然不清楚,教程仅提到变量的创建在图形中创建了一些操作(节点)。
答案 0 :(得分:0)
我认为你在做什么看起来是正确的。正如您所说,变量只是一个输出特定值张量的操作(图中的节点)。您应该能够将变量节点添加到列表中以保留它们,就像您一直在做的那样。你能用print(sess.graph_def)来确保你提供的名字是正确的吗?