【问题标题】:CNN with 2000 classes?CNN 有 2000 个课程?
【发布时间】:2016-02-12 02:47:23
【问题描述】:

我需要将图像分类为 2000 个类别之一。

我正在使用 Nvidia DIGITS + caffe (GoogLeNet) 并为每个类提供 10K 样本(因此有高达 2000 万张图像,约 1Tb 数据!)。但是数据准备(“创建数据库”)任务本身估计需要 102 天,如果这个估计是正确的,我不禁想到实际的训练时间会是多少。

应对这一挑战的最佳方式是什么?我应该将数据集分解为 3-4 个模型吗?并分别使用它们?使用较小的数据集并降低准确性的风险?还有什么?

感谢您帮助新手。

【问题讨论】:

    标签: deep-learning caffe conv-neural-network nvidia-digits


    【解决方案1】:

    首先,你需要知道你应该使用什么场景LMDB/LevelDB,你会得到什么好处(尤其是parallel的培训。) 但是你会遇到的是创建LMDB又大又慢,还需要使用SSD instead of HDD来减少耗时问题。

    其次,当你只需要用小数据集(例如ImageDataLayer。

    最后,正如@Shai 所说,所有过程中最大的挑战始终是准备数据,以及检查训练结果是否符合您的预期,如果是不是你应该检查数据,再次准备数据或检查训练配置。如果您尝试了所有可能的解决方案,但仍然感觉速度很慢,您可以尝试将您的硬件更改为GPU cluster

    【讨论】:

      【解决方案2】:

      我认为你可以使用 ImageDataLayer 而不是 LMDB 或 levelDB。

      【讨论】:

      • why downvote... 正如作者所说“但数据准备(创建数据库)任务本身估计为 102 天”,通过使用 ImageDataLayer,您不必创建 lmdb 数据库和只需使用 txt 文件进行训练。以我的经验,imagedatalayer的速度也很快。
      【解决方案3】:

      你得到了训练数据!!这是整个过程中最具挑战性的部分,不要放弃!

      尝试将数据创建任务分解为多个步骤,并将它们并行化。训练需要很长时间(取决于您的 GPU),但您应该耐心等待。

      【讨论】:

        猜你喜欢
        • 2020-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-06
        • 1970-01-01
        相关资源
        最近更新 更多