大部分的教程讲解的都是MNIST等已经为用户打包封装好的数据集,用户只需要load_data即可实现数据导入。但是在我们平时使用时,无论您是做分类还是检测或者分割任务,我们不可能每次都能找到打包好的数据集使用,大多数时候我们使用的都是自己的数据集,也就是我们需要从本地读取文件。因此我们是很有必要学会数据预处理这个本领的。本篇文章,我们就聊聊如何使用TensorFlow2.0对自己的数据集进行处理。
在TensorFlow2.0中,对数据处理的方法有很多种,下面我主要介绍两种我自认为最好用的数据预处理的方法。关于之前1.x版本的管道方式,在tf2.0中已经被取消。
1. 使用Keras API对数据进行预处理
在TensorFlow2.0的高级API Keras中有个比较好用的图像处理的类ImageDataGenerator,它可以将本地图像文件自动转换为处理好的张量。
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_data_dir = r"D://Learning//tensorflow_2.0//smile//data//train"
val_data_dir = r"D://Learning//tensorflow_2.0//smile//data//val"
img_width,img_height = 48,48
batch_size = 16
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
horizontal_flip=True)
val_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_si