TF save/restore graph fails at tf.GraphDef.ParseFromString()
Question: Based on this [converting-trained-tensorflow-model-to-
protobuf](http://stackoverflow.com/questions/35247406/converting-trained-
tensorflow-model-to-protobuf) I am trying to save/restore TF graph without
success.

Here is saver:

    
    
    with tf.Graph().as_default():
        variable_node = tf.Variable(1.0, name="variable_node")
        output_node = tf.mul(variable_node, 2.0, name="output_node")
        sess = tf.Session()
        init = tf.initialize_all_variables()
        sess.run(init)
        output = sess.run(output_node)
        tf.train.write_graph(sess.graph.as_graph_def(), summ_dir, 'model_00_g.pbtxt', as_text=True)
        #self.assertNear(2.0, output, 0.00001)
        saver = tf.train.Saver()
        saver.save(sess, saver_path)
    

which produces `model_00_g.pbtxt` with text graph description. Pretty much
copy paste from
[freeze_graph_test.py](https://github.com/tensorflow/tensorflow/blob/00440e99ffb1ed1cfe4b4ea650e0c560838a6edc/tensorflow/python/tools/freeze_graph_test.py#L79).

Here is reader:

    
    
    with tf.Session() as sess:
    
        with tf.Graph().as_default():
            graph_def = tf.GraphDef()
            graph_path = '/mnt/code/test_00/log/2016-02-11.22-37-46/model_00_g.pbtxt'
            with open(graph_path, "rb") as f:
                proto_b = f.read()
                #print proto_b   # -> I can see it
                graph_def.ParseFromString(proto_b) # no luck..
                _ = tf.import_graph_def(graph_def, name="")
    
        print sess.graph_def
    

which fails at `graph_def.ParseFromString()` with `DecodeError: Tag had
invalid wire type.`

I am on docker container `b.gcr.io/tensorflow/tensorflow:latest-devel` in case
it makes any difference.


Answer: The `GraphDef.ParseFromString()` method (and, in general, the
`ParseFromString()` method on any Python protobuf wrapper) expects a string in
the binary protocol buffer format. If you pass `as_text=False` to
[`tf.train.write_graph()`](https://www.tensorflow.org/versions/master/api_docs/python/train.html#write_graph),
then the file will be in the appropriate format.

Otherwise you can do the following to read the text-based format:

    
    
    from google.protobuf import text_format
    # ...
    graph_def = tf.GraphDef()
    text_format.Merge(proto_b, graph_def) 
    

