数据扩充会导致CNN的学习速度变慢吗?

时间:2018-02-20 15:18:57

标签: machine-learning neural-network deep-learning keras conv-neural-network

我正在研究图像像素分类问题并使用 数据增加(在Keras)。

所以我将数据转换(旋转,翻转)应用于图像补丁。我的CNN数据增强和培训代码如下。

datagen = ImageDataGenerator(
    rotation_range=40,
       horizontal_flip=True,
    vertical_flip=True,
)

batch_size=16
epochs=50

# compile the model
model.compile(loss='categorical_crossentropy',
          optimizer=Adam(),
          metrics=['accuracy'])


model_checkpoint = ModelCheckpoint('myweights.hdf5', monitor='val_acc', verbose=1, save_best_only=True, mode='max')

callbacks_list = [plot_losses,model_checkpoint]

history=model.fit_generator(datagen.flow(x_train, y_train, batch_size=batch_size),
                    steps_per_epoch=x_train.shape[0] // batch_size,
                    callbacks=callbacks_list,
                    validation_data = datagen.flow(x_valid, y_valid, batch_size=batch_size),
                    validation_steps=x_valid.shape[0] // batch_size,
                    epochs = epochs, verbose = 1)

我的火车/验证准确性和丢失情况如下: enter image description here

我可以看到准确性和损失率普遍持续增加,这正是我们想要的。但它在20个时代中非常缓慢。没有数据增加,我的准确性会更快。

那么为什么数据增加导致如此缓慢的学习过程(大约48%到58%的训练/有效准确度在20个时期内增加)?

我正在使用使用指数学习率衰减的Adam optimizer,所以我不相信新的学习率计划会影响很大,除非我遗漏了什么。任何见解都是受欢迎的。

1 个答案:

答案 0 :(得分:2)

使用数据增强模型训练速度较慢时,预计会出现这种情况。增强翻转,旋转并通常转换图像以扩大我们的数据集。这是通过比GPU慢的CPU来完成的。

我们使用扩充不是为了提高速度,而是为了提高准确性。