python Batch_size在tensorflow keras图像增强中的用途?

2ul0zpep  于 2023-11-15  发布在  Python
关注(0)|答案(1)|浏览(123)

我正在尝试使用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

字符串

ou6hu8tu

ou6hu8tu1#

根据docsImageDataGenerator提供了一个生成批量数据的生成器。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。有关详细信息,请参阅加载图像和增强图像的教程以及预处理层指南。

相关问题