ImageDataGenerator.flow_from_directory(...)

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


ImageDataGenerator第一种用法:
	#x_batch/lable_batch分别为一个批量大小(batch_size)的训练数据和标签值
	for x_batch, lable_batch in ImageDataGenerator(...).flow(训练集,标签集,batch_size=批量大小)
		model.fit(x_batch, lable_batch)

ImageDataGenerator第二种用法:
	#这里的input输入是单个图片的数据,可以是np.array类型的图片数据
	input = ImageDataGenerator(...).random_transform(input)

ImageDataGenerator第三种用法:
	#target_size=(N, N) 可以指定读取出来的图片大小直接转换为N*N,这样可以方便地把不适配模型要求的输入大小的图片直接转换为指定大小。
	#class_mode='binary'表示不论类别文件夹的名字是数字/字母/中文,都会自动把 所有每个类别文件夹的名字 对应转换为 0~N的 类别值。
	train_generator = ImageDataGenerator(...).flow_from_directory("目录路径",target_size=(N, N),batch_size=批量大小,class_mode='binary')
	validation_generator = ImageDataGenerator(...).flow_from_directory("目录路径",target_size,batch_size,class_mode='binary')
	model.fit_generator(train_generator,
			steps_per_epoch=N, #steps_per_epoch为每个epoch中遍历批量数据的次数,即steps_per_epoch*batch_size等于数据集的样本数
			epochs=N, #epochs为遍历数据集的次数,epoch值为N,那么就遍历数据集N次,比如默认对同一个数据集完整遍历N次
			validation_data=validation_generator,
			validation_steps=N) #validation_steps 同 steps_per_epoch

# 定义输入数据的大小和批次大小
image_size = (224, 224)
batch_size = 32
#即使读取的图片分辨率大小和image_size指定的大小不一致也没关系,
#会对输入图片进行自动截取image_size指定的大小。
#比如VGG16的模型中需要输入的大小为image_size = (224, 224),
#那么即使输入的图片分辨率大小和VGG16指定的大小不一致也没关系,
#即可使用flow_from_directory(...,target_size=image_size,...)指定image_size=(224, 224),
#来读取不符合代销的文件,那么该函数会对输入图片进行自动截取image_size指定的大小
train_gen = ImageDataGenerator(...).flow_from_directory(train_dir,
                                                     target_size=image_size,
                                                     batch_size=batch_size,
                                                     class_mode='binary',
                                                     shuffle=True)


例子1:使用ImageDataGenerator(...).flow_from_directory(...) 读取以下格式的数据集文件
       ImageDataGenerator(...).flow_from_directory(...,class_mode='binary',...) 表示读取的每个分类文件夹名字自动会被转换为0/1/2/3/...等数字
       然后可以使用 model.compile(optimizer=tf.keras.optimizers.Adam(),
                      		loss=tf.keras.losses.sparse_categorical_crossentropy,
		    		metrics = [tf.keras.metrics.sparse_categorical_accuracy]) #也可以使用 metrics=['accuracy']


例子2:使用ImageDataGenerator(...).flow_from_directory(...) 读取以下格式的数据集文件
       ImageDataGenerator(...).flow_from_directory(...,class_mode='binary',...) 表示读取的每个分类文件夹名字自动会被转换为0/1/2/3/...等数字
       然后可以使用 model.compile(optimizer=tf.keras.optimizers.Adam(),
                      		loss=tf.keras.losses.sparse_categorical_crossentropy,
		    		metrics = [tf.keras.metrics.sparse_categorical_accuracy]) #也可以使用 metrics=['accuracy']

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: .flow_from_directory是Keras中ImageDataGenerator类的一个方法,用于从指定目录中读取图像数据并进行数据增强。该方法可以自动从目录中读取图像,并将它们转换为张量形式,以便于在模型中进行训练。同时,它还支持对图像进行随机旋转、缩放、剪切等操作,以增加数据的多样性,提高模型的泛化能力。 ### 回答2: .flow_from_directory 是 Keras 中的一个函数,可用于从目录中读取图像数据并生成一个迭代器用于模型的训练和评估。 这个函数接受一个包含图像数据的目录作为输入,并可以自动地从目录中读取图像。它会通过遍历目录下的所有子目录来识别不同的类别,并为每个类别分配一个唯一的整数标签。然后,它会加载每张图像,将其重新调整为相同的大小,并将其转换为浮点数数组,以便于输入到神经网络中。 .flow_from_directory 还能处理图像的标签。例如,如果图像的文件名中包含了标签信息,该函数可以从文件名中提取出标签,并将其与图像对应起来。这样,我们可以在训练模型时,直接从这个迭代器中获取由图像和标签组成的 mini-batch。 通过使用 .flow_from_directory 函数,我们可以方便地从目录中读取大量的图像数据,并将其转换为适合神经网络训练的形式。这样,我们就能够更加高效地进行模型的训练和评估,同时避免手动处理图像和标签数据带来的麻烦和错误。使用这个函数,我们可以更加专注于模型本身的设计和改进,提高模型的性能和效果。 ### 回答3: .flow_from_directory是Keras中一个函数,主要用于从一个文件夹中加载图像数据进行训练和验证。 它的工作原理是,根据指定的文件夹路径和参数,自动从指定的文件夹中读取图像数据,并将这些数据产生为一个迭代器(Iterator)。这个迭代器可以被用于模型的训练和验证。 首先,我们需要在文件夹中将图像分为不同的类别,每个子文件夹代表一个类别。然后,我们可以使用.flow_from_directory函数来指定文件夹的路径,并设置一些参数,如图像的大小、颜色模式、批次大小、类别模式等。 .flow_from_directory函数返回一个DirectoryIterator对象,该对象是一个迭代器,可以逐批次地从文件夹中读取数据。每个批次中的数据由图像数组和对应的标签数组组成。 这个函数的好处是,它可以自动将图像数据进行预处理,如图像缩放、归一化等操作。此外,它还可以根据需要进行数据增强,如随机旋转、变形等操作,从而提升模型的泛化能力。 总之,.flow_from_directory函数是一个非常方便的工具,可以从文件夹中自动加载图像数据,并生成一个迭代器,用于模型的训练和验证。它减少了手动处理图像数据的复杂性,提高了训练效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

あずにゃん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值