【问题标题】:Are there any options or parameters that I can change to reduce the training time when training the Convolutional neural network (DenseNet)?在训练卷积神经网络 (DenseNet) 时,是否可以更改任何选项或参数以减少训练时间?
【发布时间】:2023-03-29 19:59:01
【问题描述】:

我正在使用以下 Python 代码“ImageAI”来使用 DenseNet 进行研究。

ImageAI github:https://github.com/OlafenwaMoses/ImageAI

ImageAI 示例:https://towardsdatascience.com/train-image-recognition-ai-with-5-lines-of-code-8ed0bdd8d9ba

我目前正在使用 CNN 方法 (DenseNet) 进行与符号识别(二维建筑绘图符号)相关的研究。 VAV 盒子符号的一个例子是:https://ibb.co/cyhwRvf

我正在尝试对 39 个类进行分类(对象数,在这种情况下是符号数),并且每个类有 2,000 张图像用于训练数据(2,000 x 39 = 78,000)。对于测试数据,我有 1,000 张图像(1,000 x 39 = 39,000)。数据集的总大小为 1.82 GB(我认为这是一个相对较小的大小,但如果我错了请纠正我)。

但问题是训练时间太长了。

我尝试过使用 GPU(Nvidia Geforce RTX 2080 Ti),当我将 epoch(实验次数)设置为 200 时需要 3 天的时间来训练。

我想知道是否有办法减少培训时间。是否有任何我可以更改的参数或任何其他选项?

或者考虑到数据集的大小和我使用的 GPU,这是否被视为正常消耗时间?

训练的五行代码如下:

from imageai.Prediction.Custom import ModelTraining

model_trainer = ModelTraining()

model_trainer.setModelTypeAsDenseNet()

model_trainer.setDataDirectory("mechsymbol")
model_trainer.trainModel(num_objects=39, num_experiments=200, enhance_data=True, batch_size=32, show_network_summary=True)

【问题讨论】:

    标签: python conv-neural-network training-data


    【解决方案1】:

    我对 ImageAI/Tensorflow 还很陌生,但仍在学习。

    在使用参数获得更快的学习方面,我认为 enhance_data 通过将其设置为 False 可以让您更快地学习。 如果您没有要训练的大量图像(少于 1000 个),则应将此参数设置为 True。此参数将从现有样本中获取更多样本。

    enhance_data = False
    

    另外值得一提的是,如果由于模型过度拟合而在例如 50 个 epoch 之后没有得到任何更好的结果,则不必进行所有 200 代训练。

    听说过使用 FP16 而不是 FP32 的“混合精度训练”吗?

    我自己没有尝试过,因为它在 Nvidia GTX 1080 Ti 上会有微小的差异,因为它没有张量核心。但是你可以在这里阅读更多关于它的信息 https://medium.com/tensorflow/automatic-mixed-precision-in-tensorflow-for-faster-ai-training-on-nvidia-gpus-6033234b2540

    供参考:

    当我对包含 62 个类别 (26GB) 的图像数据集进行 ResNet 训练时,其中有 1000 到 2000 张图像用于训练,200 张图像用于验证,每个 epoch 大约需要 10 分钟。

    对于 200 代的培训,大约需要 33 个小时。

    这是我的 imageAi python 代码行

    model_trainer = ModelTraining()
    model_trainer.setModelTypeAsResNet()
    model_trainer.setDataDirectory('.')
    model_trainer.trainModel(num_objects=classes_in_train, num_experiments=100, 
    enhance_data=False, batch_size=32)
    
    Found 81086 images belonging to 62 classes.
    Found 13503 images belonging to 62 classes.
    
    Epoch 38/100
    231/2533 [=>............................] - ETA: 10:00 - loss: 2.9065e-04 - acc: 0.9999
    

    希望它能给你提供有用的信息。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 2016-07-01
      • 2019-01-14
      • 1970-01-01
      • 2017-05-28
      • 2016-07-21
      相关资源
      最近更新 更多