读取tfrecords来输入给网络进行训练,要比直接从照片源文件中读取数据要快的多。
import tensorflow as tf
def read_and_decode(filename, batch_size, capacity, min_after_dequeue):
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)
}
)
label = features["label"]
img = features["img_raw"]
img = tf.decode_raw(img, tf.uint8)
print("-------------1-------------")
print(img.shape)
img = tf.reshape(img, [227, 227, 3])
print("-------------2-------------")
print(img.shape)
img = tf.cast(img, tf.float32)*1.0/255*0.5
label = tf.cast(label, tf.int32)
img_batch, label_batch = tf.train.shuffle_batch([img, label],
batch_size=batch_size,
capacity=capacity, min_after_dequeue=min_after_dequeue)
return img_batch, label_batch
... prompt'''