如果在Keras中构建模型时未明确指定输出节点,则可以像这样将它们打印出来:
[print(n.name) for n in tf.get_default_graph().as_graph_def().node]
然后,您所需要做的就是找到正确的名称,该名称通常类似于激活功能的名称。您可以只使用在freeze_graph
函数中找到的字符串名称作为output_node_names
的值。
0
如果在Keras中构建模型时未明确指定输出节点,则可以像这样将它们打印出来:
[print(n.name) for n in tf.get_default_graph().as_graph_def().node]
然后,您所需要做的就是找到正确的名称,该名称通常类似于激活功能的名称。您可以只使用在freeze_graph
函数中找到的字符串名称作为output_node_names
的值。
0
您可以使用Keras model.summary()来获取最后一层的名称。
如果model.outputs不为空,则可以通过以下方式获取节点名称:
[node.op.name for node in model.outputs]
您通过以下方式获得会话
session = keras.backend.get_session()
然后通过以下方式将所有训练变量转换为const
min_graph = convert_variables_to_constants(session, session.graph_def, [node.op.name for node in model.outputs])
之后,您可以通过以下方式编写protobuf文件
tensorflow.train.write_graph(min_graph, "/logdir/", "file.pb", as_text=True)
0
您也可以使用tensorflow实用程序: summarize_graph
找到可能output_nodes
。从官方文档中 :
该工具支持的许多转换都需要知道模型的输入和输出层是什么。最好的来源是模型训练过程,其中对于分类器,输入将是从训练集中接收数据的节点,而输出将是预测。如果不确定,summary_graph工具可以检查模型并提供有关可能的输入和输出节点的猜测,以及其他对调试有用的信息。
它只需要保存的图形pb
文件作为输入。查看文档中的示例。
0
我正在尝试从Keras(tensorflow后端)模型创建一个pb文件,以便可以在iOS上构建它。我正在使用freeze.py,我需要传递输出节点。我如何获得Keras模型的输出节点的名称?
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py