可以参考深度学习笔记:在小数据集上从头训练卷积神经网络_笨牛慢耕的博客-CSDN博客_小数据集训练
ImageDataGenerator.flow_from_directory可以提取TFrecord数据格式。
image_dataset_from_directory是更古老的东西也能作为TFrecord数据提取的工具,但是提取的是整个文件夹中的文件数据集,如果想要划分为训练集和验证集,可以尝试使flow_from_directory。
示例如下:
#使用原模块,subset参数是取0-1之间的浮点型数(但是我没整明白返回的是几个数据集)
tf.keras.preprocessing.image_dataset_from_directory(
directory,
labels="inferred",
label_mode="int",
class_names=None,
color_mode="rgb",
batch_size=32,
image_size=(256, 256),
shuffle=True,
seed=None,
validation_split=None,
subset=None,
interpolation="bilinear",
follow_links=False,
)
(此代码块出现subset设置问题,因为我不需要这个代码块了就没有再去解决这个问题)
##返回的是整个train文件夹中所有的文件,标签也按文件夹名所分类
train_generator = train_datagen.flow_from_directory(root_path+'/train',target_size=(size_img,size_img),color_mode='grayscale',batch_size=batch_siz,class_mode='categorical',shuffle=True,seed=42)
返回的结果:
##仅添加了参数subset就能将整个训练集分为训练接70%,验证集30%
train_generator = train_datagen.flow_from_directory(root_path+'/train',target_size=(size_img,size_img),color_mode='grayscale',batch_size=batch_siz,class_mode='categorical',subset='training',shuffle=True,seed=42)
val_generator = train_datagen.flow_from_directory(root_path+'/train',target_size=(size_img,size_img),color_mode='grayscale',batch_size=batch_siz,class_mode='categorical',subset='validation',shuffle=True,seed=42)
返回的结果是
整个提取文件夹并划分好数据集的代码如下:
#设置图像生成器,(此处并未添加任何文件),
train_datagen = ImageDataGenerator(rescale=1./255,validation_split=0.3)
test_datagen = ImageDataGenerator(rescale = 1./255)
#以文件分类名划分label
train_generator = train_datagen.flow_from_directory(root_path+'/train',target_size=(size_img,size_img),color_mode='grayscale',batch_size=batch_siz,class_mode='categorical',subset='training',shuffle=True,seed=42)
val_generator = train_datagen.flow_from_directory(root_path+'/train',target_size=(size_img,size_img),color_mode='grayscale',batch_size=batch_siz,class_mode='categorical',subset='validation',shuffle=True,seed=42)
test_generator = test_datagen.flow_from_directory(root_path+'/test',target_size=(size_img,size_img),color_mode='grayscale',batch_size=batch_siz,class_mode='categorical',shuffle=False,seed=42)
返回的结果: