【问题标题】:Keras training is slow when using ImageDataGenerator使用 ImageDataGenerator 时 Keras 训练很慢
【发布时间】: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


    【解决方案1】:

    如果您可以在 fit 中将 workers=8 指定为 kwarg,请尝试。

    如果没有,请将 fit 与已弃用的方法 fit_generator 交换,看看如果你提升工人,你是否会提高性能。 https://www.tensorflow.org/api_docs/python/tf/keras/Model

    model.fit_generator(
        train_generator,
        workers=8,
        steps_per_epoch = train_generator.samples//bs,
        validation_data = test_generator, 
        validation_steps = test_generator.samples//bs,
        epochs = nb_epochs)
    

    或者,您可以在神经网络的顶部添加一个平均池或最大池,以便在神经网络中构建下采样,从而利用 gpu 执行下采样。

    【讨论】:

    • 增加为我工作的工人数量!现在,每个可用 GPU 的 GPU 使用率都超过了 95%。谢谢!
    猜你喜欢
    • 2018-03-12
    • 2017-07-15
    • 2021-01-20
    • 1970-01-01
    • 2021-04-10
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多