2

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

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

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

感谢您帮助新手。

4

3 回答 3

2

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

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

于 2015-11-11T06:08:30.587 回答
0

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

于 2016-01-25T12:40:02.767 回答
0

首先,你需要知道你应该使用LMDB/LevelDB什么场景,你能得到什么好处(尤其是并行训练。)但是你会遇到的事情是创建LMDB又大又慢,你还需要使用SSD而不是 HDD以减少耗时的问题。

其次,当你只需要用小数据集(例如<2M图像)训练CNN时,你可以像@kli_nlpr所说的那样使用ImageDataLayer 。

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

于 2016-06-14T07:52:13.797 回答