【发布时间】:2020-05-10 20:26:29
【问题描述】:
所以我刚开始使用 Keras,我首先尝试了 MNIST 数据集,一切都在短短几秒钟内快速 5 epoch(60k 图像)。
现在我正在尝试在具有大约 8000 张图像的汽车数据集上训练 CNN,我使用 ImageDataGenerator 将图像调整为相同大小 (128 * 128) 并从具有文件名和每个图像的类名,这里是负责这个的部分:
datagen=ImageDataGenerator(validation_split=0.2)
train_generator = datagen.flow_from_dataframe(dataframe=df_train, directory="cars/cars_train/cars_train/", x_col="fname", y_col="class_name", class_mode="categorical", target_size=(128,128), batch_size=32,subset="training")
test_generator = datagen.flow_from_dataframe(dataframe=df_train, directory="cars/cars_train/cars_train/", x_col="fname", y_col="class_name", class_mode="categorical", target_size=(128,128), batch_size=32,subset="validation")
如您所见,除了调整数据集的大小外,我没有做任何密集的事情。
当我在 ImageDataGenerator 上使用 model.fit 时,第一个 epoch 大约需要 2800 秒才能完成,而另一个 epoch 只需要大约 60 - 70 秒(1 分钟)。 NN并不复杂,只有2个卷积层+1个密集层。
nb_epochs = 4
bs = 32
model.fit(
train_generator,
steps_per_epoch = train_generator.samples//bs,
validation_data = test_generator,
validation_steps = test_generator.samples//bs,
epochs = nb_epochs)
我想知道使用 ImageDataGenerator 训练网络速度很慢,尤其是在第一个 epoch 是否正常?如果是这样,是否有更快更有效的方法来调整图像大小并在训练网络之前对其进行预处理?
顺便说一句,我使用的是 Google Colab,我启用了 GPU 并检查了 tensorflow 是否正在使用 GPU
这是笔记本的链接,比较乱,不好意思:https://colab.research.google.com/drive/1FqPeqIhKo_lUjhoB2jlne1HnwItOJkIW?usp=sharing
【问题讨论】:
标签: python keras deep-learning google-colaboratory