读取tfrecord数据
从TFRecords文件中读取数据, 首先需要用tf.train.string_input_producer
生成一个解析队列。之后调用tf.TFRecordReader
的tf.parse_single_example
解析器。如下图:
解析器首先读取解析队列,返回serialized_example
对象,之后调用tf.parse_single_example
操作将Example协议缓冲区(protocol buffer)解析为张量。
简单来说,一旦生成了TFRecords文件,接下来就可以使用队列(queue)读取数据了。
def read_and_decode(filename):
#根据文件名生成一个队列
filename_queue = tf.train.string_input_producer([filename])
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue) #返回文件名和文件
features = tf.parse_single_example(serialized_example,
features={
'label': tf.FixedLenFeature([], tf.int64),
'img_raw' : tf.FixedLenFeature([], tf.string),
})
img = tf.decode_raw(features['img_raw'], tf.uint8)
img = tf.reshape(img, [224, 224, 3])
img = tf.cast(img, tf.float32) * (1. / 255) - 0.5
label = tf.cast(features['label'], tf.int32)
return img, label
举例:
下面代码是我的程序中利用TFRecord读取格式时的代码:
这部分只要使用对应的代码就可以,主要是知道咋回事。
如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~
回复【福利】即可获取我为你准备的大礼,包括C++,编程四大件,NLP,深度学习等等的资料。
想看更多文(段)章(子),欢迎关注微信公众号「程序员管小亮」~