我在Keras上阅读了一些关于数据增强的资料,但对我来说仍然有些模糊。是否有任何参数可以控制在数据增强步骤中从每个输入图像创建的图像数量?在this example中,我无法看到任何控制从每张图片创建的图像数量的参数。
例如,在下面的代码中,我可以有一个参数(mic.startCapture({format: 'wav'});
mic.audioStream.on('data', function(data) {
/* data is Uint8Array[8192] */
});
),用于控制从每个输入图像创建的图像数量,并存储在名为preview的文件夹中;但在实时数据增加中,没有任何参数用于此目的。
num_imgs
答案 0 :(得分:9)
数据增强的工作原理如下:在每个学习时期,在指定范围内随机选择的参数的变换应用于训练集中的所有原始图像。在完成一个时期之后,即在将学习算法暴露于整组训练数据之后,开始下一个学习时期,并且通过将指定的变换应用于原始训练数据再次增强训练数据。
以这种方式,每个图像被增强的次数等于学习时期的数量。召回表格the example that you linked:
# Fit the model on the batches generated by datagen.flow().
model.fit_generator(datagen.flow(X_train, Y_train,
batch_size=batch_size),
samples_per_epoch=X_train.shape[0],
nb_epoch=nb_epoch,
validation_data=(X_test, Y_test))
此处datagen
对象会将训练集公开为model
nb_epoch
次,因此每张图片都会增加nb_epoch
次。以这种方式,学习算法几乎从不会看到两个完全相同的训练示例,因为在每个时期训练示例是随机变换的。
答案 1 :(得分:3)
基本上它是如何工作的,它只为每个输入图像生成一个图像,在所有输入图像生成一次之后,它将重新开始。
在您的示例中,因为总共只有一个输入图像,它将重复生成该图像的不同版本,直到二十年。
您可以在此处查看源代码https://github.com/fchollet/keras/blob/master/keras/preprocessing/image.py