Tensorflow:如何将.meta,.data和.index模型文件转换为一个graph.pb文件 [英] Tensorflow: How to convert .meta, .data and .index model files into one graph.pb file

查看:1846
本文介绍了Tensorflow:如何将.meta,.data和.index模型文件转换为一个graph.pb文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在tensorflow中,从头开始的训练产生了以下6个文件:

In tensorflow the training from the scratch produced following 6 files:

  1. events.out.tfevents.1503494436.06L7-BRM738
  2. model.ckpt-22480.meta
  3. 检查点
  4. model.ckpt-22480.data-00000-of-00001
  5. model.ckpt-22480.index
  6. graph.pbtxt
  1. events.out.tfevents.1503494436.06L7-BRM738
  2. model.ckpt-22480.meta
  3. checkpoint
  4. model.ckpt-22480.data-00000-of-00001
  5. model.ckpt-22480.index
  6. 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

  1. 您可以使用 Netron 或控制台 summarize_graph 实用工具.

  1. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆