我需要将图像分类为2000个类之一。
我正在使用Nvidia DIGITS + caffe(GoogLeNet)并且每个类提供10K样本(因此高达2000万个图像,〜1Tb数据!)。但是数据准备("创建db")任务本身估计为102天,如果估计是正确的话,我会想一想实际的训练时间是什么。
应对这一挑战的最佳方法是什么?我应该将数据集分解为3-4个模型吗?并单独使用它们?使用较小的数据集,风险较低?别的什么?
感谢您帮助新手。
答案 0 :(得分:2)
你得到了训练数据!!这是所有过程中最具挑战性的部分,不要放弃它!
尝试将数据创建任务分解为步骤,并将它们并行化。培训需要很长时间(取决于您的GPU),但您应该耐心等待。
答案 1 :(得分:0)
我认为您可以使用ImageDataLayer而不是LMDB或levelDB。
答案 2 :(得分:0)
首先,您需要知道应该使用哪种方案LMDB/LevelDB以及您获得的好处(尤其是parallel中的培训。) 但是你会遇到的事情是创建LMDB很大而且很慢,你还需要使用SSD instead of HDD来减少耗时的问题。
其次,当您只需要使用小数据集(例如< 2M图像)训练CNN时,您可以使用 ImageDataLayer 与@kli_nlpr相同。
最后,正如@Shai所说,所有流程中最大的挑战始终是准备数据,检查培训结果是否符合您的预期,如果是不是你应该检查数据,再次准备数据或检查培训配置。如果您尝试了所有可能的解决方案,但仍然感觉很慢,并且您可以尝试将硬件更改为GPU cluster。