Read TFRecords get Exception Can't parse serialized Example

问题现象

Stacktrace

1
2
InvalidArgumentError (see above for traceback): Key: features.  Can't parse serialized Example.
	 [[node ParseSingleExample/ParseSingleExample (defined at /work/tanyan/project/foresee/model/logistic_regression_example.py:11) ]]

相关代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import tensorflow as tf

record_path = '/tmp/tfrecord_write_test/part-r-00000'

filename_queue = tf.train.string_input_producer([record_path])
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue)
features = tf.parse_single_example(serialized_example,
                                   features={
                                       'label': tf.FixedLenFeature([], tf.float32),
                                       'features': tf.FixedLenFeature([], tf.float32),
                                   })

with tf.Session() as sess:
    init_op = tf.initialize_all_variables()
    sess.run(init_op)
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)
    for i in range(2):
        example = sess.run([features])#在会话中取出image和label
        example
        print(example)

解决方案

代码

1
tf.FixedLenFeature([], tf.float32)

需要带上对应的长度。如:

1
tf.FixedLenFeature([2], tf.float32)