def read_and_decode_single_example(self,filename,test=False):
with tf.name_scope('TFRecordReader'):
# first construct a queue containing a list of filenames.
# this lets a user split up there dataset in multiple files to keep
# size down
files = [filename] if self.filenameNr==1 or test else [filename.format(i) for i in range(self.filenameNr)]
filename_queue = tf.train.string_input_producer(files,
num_epochs=None)
# Unlike the TFRecordWriter, the TFRecordReader is symbolic
reader = tf.TFRecordReader()
# One can read a single serialized example from a filename
# serialized_example is a Tensor of type string.
_, serialized_example = reader.read(filename_queue)
# The serialized example is converted back to actual values.
# One needs to describe the format of the objects to be returned
features = tf.parse_single_example(
serialized_example,
features={
# We know the length of both fields. If not the
# tf.VarLenFeature could be used
'seq_len': tf.FixedLenFeature([1], tf.int64),
'target': tf.VarLenFeature(tf.int64),
'imageInput': tf.FixedLenFeature([self.height*self.width], tf.float32)
})
# now return the converted data
imageInput = features['imageInput']
seq_len = features['seq_len']
target = features['target']
return imageInput, seq_len , target
评论列表
文章目录