CNN 有 2000 类?
CNN with 2000 classes?
我需要将图像 class 化为 2000 个 class 之一。
我正在使用 Nvidia DIGITS + caffe (GoogLeNet) 并为每个 class 提供 10K 个样本(因此高达 2000 万张图像,~1Tb 数据!)。但是数据准备 ("create db") 任务本身被估计为 102 天,如果这个估计是正确的,我不敢想象实际的训练时间是多少。
应对这一挑战的最佳方式是什么?我应该将数据集分解成 3-4 个模型吗?并分别使用它们?使用较小的数据集并降低准确性的风险?还有别的吗?
感谢您帮助新手。
你得到训练数据了!!这是整个过程中最具挑战性的部分,不要放弃!
尝试将数据创建任务分解为多个步骤,并将它们并行化。训练将花费很长时间(取决于您的 GPU),但您应该耐心等待。
我认为您可以使用 ImageDataLayer 而不是 LMDB 或 levelDB。
首先,你需要知道你应该使用什么场景 and what benefit do you get(especially, training in parallel。)
但是你会遇到的是创建LMDB又大又慢,还需要使用SSD instead of HDD来减少耗时的问题。
其次,当你只需要用小数据集(例如 < 2M 图像)训练 CNN 时,你可以只使用 ImageDataLayer 与@kli_nlpr 说的一样。
最后,正如@Shai 所说,所有过程中最具挑战的永远是准备数据,以及检查训练结果是否符合您的预期,如果不是你应该检查数据,重新准备数据或检查训练配置。如果您尝试了所有可能的解决方案,但仍然感觉速度很慢,您可以尝试将硬件更改为GPU cluster。
我需要将图像 class 化为 2000 个 class 之一。
我正在使用 Nvidia DIGITS + caffe (GoogLeNet) 并为每个 class 提供 10K 个样本(因此高达 2000 万张图像,~1Tb 数据!)。但是数据准备 ("create db") 任务本身被估计为 102 天,如果这个估计是正确的,我不敢想象实际的训练时间是多少。
应对这一挑战的最佳方式是什么?我应该将数据集分解成 3-4 个模型吗?并分别使用它们?使用较小的数据集并降低准确性的风险?还有别的吗?
感谢您帮助新手。
你得到训练数据了!!这是整个过程中最具挑战性的部分,不要放弃!
尝试将数据创建任务分解为多个步骤,并将它们并行化。训练将花费很长时间(取决于您的 GPU),但您应该耐心等待。
我认为您可以使用 ImageDataLayer 而不是 LMDB 或 levelDB。
首先,你需要知道你应该使用什么场景
其次,当你只需要用小数据集(例如 < 2M 图像)训练 CNN 时,你可以只使用 ImageDataLayer 与@kli_nlpr 说的一样。
最后,正如@Shai 所说,所有过程中最具挑战的永远是准备数据,以及检查训练结果是否符合您的预期,如果不是你应该检查数据,重新准备数据或检查训练配置。如果您尝试了所有可能的解决方案,但仍然感觉速度很慢,您可以尝试将硬件更改为GPU cluster。