Near empty frozen graph after using freeze_graph from Tensorflow

南笙酒味 提交于 2019-12-10 23:12:52

问题


I am currently trying to strip the training operations from my GraphDef so that I can run it on Android. However, to do so, I need to first freeze the graph using Tensorflow's freeze_graph.py script.

However, I get the error UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 331: invalid start byte when attempting to run the bash script:

#!/bin/bash
bazel-bin/tensorflow/python/tools/freeze_graph \
--input_graph=/Users/leslie/Downloads/trained_model.pb \
--input_checkpoint=/Users/leslie/Downloads/Y6_1478303913_Leslie \
--output_graph=/tmp/frozen_graph.pb --output_node_names=Y_GroundTruth

Could this be a problem in the way I created my graph and checkpoint? I created the input_graph via tf.train.write_graph(sess.graph_def, location, 'trained_model.pb', as_text=False) and the checkpoint is created via saver.save(sess, chkpointpath). Answers from StackOverflow say that the python script has non-ascii characters and that I should just simply strip them from the python script but I do not think that is such a great idea.

Full traceback:

Traceback (most recent call last):
  File "/Users/leslie/tensorflow-master/bazel-bin/tensorflow/python/tools/freeze_graph.runfiles/org_tensorflow/tensorflow /python/tools/freeze_graph.py", line 135, in <module>
tf.app.run()
  File "/Users/leslie/tensorflow-master/bazel-bin/tensorflow/python/tools/freeze_graph.runfiles/org_tensorflow/tensorflow/python/platform/app.py", line 43, in run
sys.exit(main(sys.argv[:1] + flags_passthrough))
  File "/Users/leslie/tensorflow-master/bazel-bin/tensorflow/python/tools/freeze_graph.runfiles/org_tensorflow/tensorflow/python/tools/freeze_graph.py", line 132, in main
FLAGS.output_graph, FLAGS.clear_devices, FLAGS.initializer_nodes)
  File "/Users/leslie/tensorflow-master/bazel-bin/tensorflow/python/tools/freeze_graph.runfiles/org_tensorflow/tensorflow/python/tools/freeze_graph.py", line 98, in freeze_graph
text_format.Merge(f.read().decode("utf-8"), input_graph_def)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 331: invalid start byte

I also generated my protobuf file with as_text = True and the error above did not show up. However, I only got the following output.

Converted 0 variables to const ops.
1 ops in the final graph.

Complete contents of "frozen_graph.pb"

6

Y_GroundTruth��Placeholder*�
�dtype��0�*�
�shape��:

Snippet of PB-file generation code:

#Start all code before training code
    # Tensor placeholders and variables
    ...
    # Network weights and biases
    ...
    # Network layer definitions
    ...
    # Definition of cost function 
    ...
    # Create optimizer
    ...
    # Session operations
    ...
#END all code before training code

saver = tf.train.Saver()
with tf.Session() as sess:
    saver.restore(sess, model_save_path)
    sess.run(tf.initialize_all_variables())
    tf.train.write_graph(sess.graph_def, outputlocation, 'trained_model.pb', as_text=False)

来源:https://stackoverflow.com/questions/40561158/near-empty-frozen-graph-after-using-freeze-graph-from-tensorflow

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!