Tensorflow:如何将.meta,.data和.index模型文件转换为一个graph.pb文件 [英] Tensorflow: How to convert .meta, .data and .index model files into one graph.pb file
问题描述
在tensorflow中,从头开始的训练产生了以下6个文件:
In tensorflow the training from the scratch produced following 6 files:
- events.out.tfevents.1503494436.06L7-BRM738
- model.ckpt-22480.meta
- 检查点
- model.ckpt-22480.data-00000-of-00001
- model.ckpt-22480.index
- graph.pbtxt
- events.out.tfevents.1503494436.06L7-BRM738
- model.ckpt-22480.meta
- checkpoint
- model.ckpt-22480.data-00000-of-00001
- model.ckpt-22480.index
- graph.pbtxt
我想将它们(或仅需要的文件)转换为一个文件 graph.pb ,以便将其传输到我的Android应用程序中.
I would like to convert them (or only the needed ones) into one file graph.pb to be able to transfer it to my Android application.
我尝试了脚本freeze_graph.py
,但是它已经需要输入我没有的 input.pb 文件. (我只有前面提到的这6个文件).如何继续获得一个 freezed_graph.pb 文件?我看到了几个线程,但没有一个对我有用.
I tried the script freeze_graph.py
but it requires as an input already the input.pb file which I do not have. (I have only these 6 files mentioned before). How to proceed to get this one freezed_graph.pb file? I saw several threads but none was working for me.
推荐答案
您可以使用此简单脚本来完成该任务.但是您必须指定输出节点的名称.
You can use this simple script to do that. But you must specify the names of the output nodes.
import tensorflow as tf
meta_path = 'model.ckpt-22480.meta' # Your .meta file
output_node_names = ['output:0'] # Output nodes
with tf.Session() as sess:
# Restore the graph
saver = tf.train.import_meta_graph(meta_path)
# Load weights
saver.restore(sess,tf.train.latest_checkpoint('path/of/your/.meta/file'))
# Freeze the graph
frozen_graph_def = tf.graph_util.convert_variables_to_constants(
sess,
sess.graph_def,
output_node_names)
# Save the frozen graph
with open('output_graph.pb', 'wb') as f:
f.write(frozen_graph_def.SerializeToString())
如果您不知道输出节点的名称,则有两种方法
If you don't know the name of the output node or nodes, there are two ways
-
您可以使用 Netron 或控制台 summarize_graph 实用工具.
You can explore the graph and find the name with Netron or with console summarize_graph utility.
您可以将所有节点用作输出节点,如下所示.
You can use all the nodes as output ones as shown below.
output_node_names = [n.name for n in tf.get_default_graph().as_graph_def().node]
(请注意,必须将此行放在convert_variables_to_constants
调用之前.)
(Note that you have to put this line just before convert_variables_to_constants
call.)
但是我认为这是不寻常的情况,因为如果您不知道输出节点,就无法实际使用该图.
But I think it's unusual situation, because if you don't know the output node, you cannot use the graph actually.
这篇关于Tensorflow:如何将.meta,.data和.index模型文件转换为一个graph.pb文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!