s7ev3n
11/29/2017 - 2:16 PM

Using tensorflow dataset api to read images on disk

Using tensorflow dataset api to read images on disk

def _parse_function(filename, label):
	image_string = tf.read_file(filename)
	image_decoded = tf.image.decode_image(image_string)
	image_resized = tf.image.resize_images(image_decoded, [28, 28])
	return image_resized, label

# 图片文件的列表
filenames = tf.constant(["/var/data/image1.jpg", "/var/data/image2.jpg", ...])
# label[i]就是图片filenames[i]的label
labels = tf.constant([0, 37, ...])


#运行dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))后,
#dataset的一个元素是(filename, label)。filename是图片的文件名,label是图片对应的标签。
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))

#之后通过map,将filename对应的图片读入,并缩放为28x28的大小。此时dataset中的一个元素是(image_resized, label)
dataset = dataset.map(_parse_function)

# dataset.shuffle(buffersize=1000).batch(32).repeat(10)的功能是:在每个epoch内将图片打乱组成大小为32的batch,并重复10次。
#最终,dataset中的一个元素是(image_resized_batch, label_batch),image_resized_batch的形状为(32, 28, 28, 3),
#而label_batch的形状为(32, ),接下来我们就可以用这两个Tensor来建立模型了。
dataset = dataset.shuffle(buffersize=1000).batch(32).repeat(10)