将Tensorflow cifar10图保存到protobuf文件中

时间:2017-02-01 04:26:23

标签: python tensorflow

我一直在浏览使用cifar10数据集的Tensorflow CNN tutorial。现在,我一直在尝试修改给定的cifar10代码(这有点过时)来输出一个protobuf文件,我将能够在一个小的c ++图像识别程序中使用 - 类似于{的格式{3}}教程。总体目标是我将能够从我自己的数据集中创建和保存图表。

但是,我没有成功。我的大部分尝试都是基于tensorflow freeze_graph.py,这是我能够找到的唯一保存图形的方法。但是,我没有成功实现这一点,并遇到了无数的错误,例如:

tensorflow.python.framework.errors_impl.DataLossError: Unable to open table file 
  /tmp/cifar10_train/checkpoint: Data loss: not an sstable (bad magic number): perhaps 
  your file is in a different file format and you need to use a different restore 
  operator?

(当使用cifar10_train.py生成的graph.pbtxt作为输入图调用freeze_graph.py时,我不确定它是否有效作为输入)

还有:

File "....../freeze_graph.py", line 112, in freeze_graph
    saver_def.ParseFromString(f.read())
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/lib/io/file_io.py", line 112, in read
    return pywrap_tensorflow.ReadFromStream(self._read_buf, length, status)
  File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
    self.gen.next()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/errors_impl.py", line 469, in raise_exception_on_not_ok_status
    pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.FailedPreconditionError: dataset/train

(当试图保存我自己的检查点并输入图形作为freeze_graph.py的输入时)。

知道我可能做错了吗?

我是在正确的轨道上,还是有更简单的方法来做到这一点?

更新:

我在编写protobuf文件时已经取得了一些成功(阅读:它没有崩溃/给出错误):

output_node_names = 'ExponentialMovingAverage'
output_graph = './out_graph.pb'
graph = sess.graph
input_graph_def = graph.as_graph_def()
output_graph_def = graph_util.convert_variables_to_constants(
  sess,
  input_graph_def, 
  output_node_names.split(",")
)
with tf.gfile.GFile(output_graph, "wb") as f:
      f.write(output_graph_def.SerializeToString())
print("%d ops in the final graph." % len(output_graph_def.node))

然而,在我的识别代码中使用时,生成的pb文件不会产生任何张量。这应该产生有效的protobuf文件吗?

0 个答案:

没有答案