Tensorflow 两种方式进行数据输入:
1. feed_dict , placeholder feed
2. 读取文件中的数据, 采用 tensorflow 自带的数据输入流
tf.train.string_input_producer() 创建为队列, 例如将 tfrecords_file 创建队列, num_epoches 代表这个filename列表的数据重复多少个epoch, 如果不设置,默认为循环队列。
filename_queue = tf.train.string_input_producer(
1. feed_dict , placeholder feed
2. 读取文件中的数据, 采用 tensorflow 自带的数据输入流
tf.train.string_input_producer() 创建为队列, 例如将 tfrecords_file 创建队列, num_epoches 代表这个filename列表的数据重复多少个epoch, 如果不设置,默认为循环队列。
filename_queue = tf.train.string_input_producer(
tfrecords_filename, num_epoches=100)
tf.python.io.TFRecordOptions() 用来设置 tfrecord 是采用什么压缩方式,便于reader 读取,返回的是 A tuple of Tensors (key, value). key
: A string scalar Tensor. value
: A string scalar Tensor
options = tf.python_io.TFRecordOptions(TFRecordCompressionType.ZLIB)
reader = tf.TFRecordReader(options=options)
_, serialized_example = reader.read(filename_queue)
features = tf.parse_single_example( serialized_example,
features={'image/img_id': tf.FixedLenFeature([], tf.int64),
'image/encoded': tf.FixedLenFeature([], tf.string),
'image/height': tf.FixedLenFeature([], tf.int64),
'image/width': tf.FixedLenFeature([], tf.int64),
'label/num_instances': tf.FixedLenFeature([], tf.int64),
'label/gt_masks': tf.FixedLenFeature([], tf.string),
'label/gt_boxes': tf.FixedLenFeature([], tf.string),
'label/encoded': tf.FixedLenFeature([], tf.string),
})
其中 features
: Adict
mapping feature keys toFixedLenFeature
orVarLenFeature
values.- 是对 tfrecords 里面数据的解析,映射为一个 dict