提问人:Ali a 提问时间:11/15/2023 最后编辑:Ali a 更新时间:11/15/2023 访问量:58
Batch_size在 TensorFlow Keras 中进行图像增强的目的是什么?
purpose of Batch_size in image augmentation in tensorflow keras?
问:
我正在尝试使用 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
答:
根据文档,提供了一个生成批量数据的生成器。 将采用一组图像,每次迭代生成器(使用循环、列表推导或类似方法)时,它都会输出一批图像。您可以使用该参数控制批处理的大小。
因此,如果你有一个包含 100 个图像的数组 x,则在每次循环迭代中都会给你 32 个不同的增强图像。如果图像少于批量大小,则不会多次输出它们以填充。ImageDataGenerator
flow
for
batch_size
.flow(x, batch_size=32)
batch
batch_size
此外,如果您使用 Generator,则 tf.数据集或类似数据,则无需指定 in ,因为数据已分批出现。(链接,信息框batch_size
model.fit()
batch_size
)
不过,有一条信息,在文档中指出已弃用:ImageDataGenerator
已弃用:tf.keras.preprocessing.image.ImageDataGenerator 不是 建议用于新代码。首选加载图像 tf.keras.utils.image_dataset_from_directory和转换 输出带有预处理层的 tf.data.Dataset。查看更多 信息,请参阅有关加载图像和增强的教程 图像,以及预处理层指南。
评论
batch_size
评论