我正在尝试使用keras和tensorflow进行图像增强。但是,我无法理解batch_size参数对增强数据的影响。我给了1张图像作为输入,代码运行了3次,我的输出只有3张图像(代码附在下面)。我已经尝试改变batch_size和迭代多次,即使chatgpt说,我应该有6个图像(3次迭代,2个batch_size)作为输出。
无论如何,我的想法是输出图像(对于一个图像输入)= batch_size * 1(对于每次迭代),所以如果batch_size不是每个图像输入的乘数,那么它的目的是什么?或者我错过了什么?
关于代码的更多信息:https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
img = load_img('/content/library.png')
x = img_to_array(img)
x = x.reshape((1,) + x.shape)
i = 0
for batch in datagen.flow(x, batch_size=2,
save_to_dir='libra', save_prefix='lib', save_format='jpeg'):
i += 1
if i > 2:
break
字符串
1条答案
按热度按时间ou6hu8tu1#
根据docs,
ImageDataGenerator
提供了一个生成批量数据的生成器。flow
将接受一个图像数组,每次您遍历生成器(使用for
循环,列表解析或类似方法)时,它将输出一批图像。您可以使用batch_size
参数控制批量的大小。因此,如果你有一个数组x,其中有100个图像,
.flow(x, batch_size=32)
将在每次循环迭代中给予32个不同的增强图像。如果你的图像少于批量大小,它们将不会被多次输出以填满batch_size
。此外,如果您使用Generator、tf.Dataset或类似的数据集,则无需在
model.fit()
中指定batch_size
,因为数据已经是成批提供的。(链接,batch_size
的信息框)不过有一个信息,在docs中声明
ImageDataGenerator
已被弃用:弃用:不建议将tf.keras.preprocessing.image.ImageDataGenerator用于新代码。建议使用tf.keras.utils.image_dataset_from_directory加载图像,并使用预处理层转换输出tf.data.Dataset。有关详细信息,请参阅加载图像和增强图像的教程以及预处理层指南。