我有一个复杂的网络,一旦将模型序列化为冷冻图文件,我就为推断模型创建了一个非常简单的类。
问题是,在此文件中,我需要加上他的名称空间加载变量,这可能会取决于我如何构造模型。在我的情况下,以这样的结局:
# Load the input and output node with a singular namespace depending on the model
self.input_node = self.sess.graph.get_tensor_by_name("create_model/mymodelname/input_node:0")
self.output_node = self.sess.graph.get_tensor_by_name("create_model/mymodelname/out/output_node:0")
我想在将其存储到模型中之前将这两个节点一个别名给出一个别名,例如它们最终将拥有一个通用名称,然后可以将我的班级用于推理,可以用作获取模型的通用类。在这种情况下,我最终会做这样的事情:
# Load the input and output node with a general node namespace
self.input_node = self.sess.graph.get_tensor_by_name("input_node:0")
self.output_node = self.sess.graph.get_tensor_by_name("output_node:0")
那么,有什么选择给他们别名吗?我什么都没找到。
非常感谢!
您可以将tf.identity
用于输出。
output_node = sess.graph.get_tensor_by_name("create_model/mymodelname/output_node:0")
tf.identity(output_node, name="output_node")
将创建一个具有名称为" output_node"的新通行OP,并将从您指定的节点获取其值。
输入有点棘手,您需要更改构建模型的方式 - 例如,它将其输入从外部获取,然后创建一个带有固定名称的输入占位符,然后将其传递到函数建立模型。