数据层预取队列空,然后丢失0

时间:2015-09-27 14:16:01

标签: computer-vision neural-network deep-learning caffe

我在我自己的数据集上微调caffenet。 我已经在flickr样式数据集上成功完成了它, 所以我修改了solver和train_val原型文件以指向我的数据集,新的输出维度(= 100个类)。

我的数据集大小为1.88M图像用于训练,而.48M图像用于测试。

当我开始训练时,它暂停了一段时间

... blocking_queue.cpp:50] Data layer prefetch queue empty

然后继续如下:

... solver.cpp:414]     Test net output #0: accuracy = 0.0002
... solver.cpp:414]     Test net output #1: loss = 5.6139 (* 1 = 5.6139 loss)
... solver.cpp:242] Iteration 0, loss = 7.23329
... solver.cpp:258]     Train net output #0: loss = 7.23329 (* 1 = 7.23329 loss)
... solver.cpp:571] Iteration 0, lr = 0.001
... solver.cpp:242] Iteration 20, loss = 0
... solver.cpp:258]     Train net output #0: loss = 0 (* 1 = 0 loss)
... solver.cpp:571] Iteration 20, lr = 0.001
... solver.cpp:242] Iteration 40, loss = 0
... solver.cpp:258]     Train net output #0: loss = 0 (* 1 = 0 loss)
... solver.cpp:571] Iteration 40, lr = 0.001

等等。 显然,根本没有计算任何损失。奇怪的是,迭代0的初始损失似乎很公平。

显然,数据没有正确加载。我使用文本文件列出文件路径及其标签。

我使用softmax损失。

我尝试将初始学习率降低到1/10但没有变化。

**编辑:我已经尝试了1/1000的初始学习率。最初它似乎工作。经过大约300次迭代后,其损失再次迅速下降,准确率达到100%,表明某些事情可能再次出现问题。这些症状同时出现了caffenet和VGG。

知道可能出现什么问题吗?

1 个答案:

答案 0 :(得分:1)

问题是培训和测试数据的文本文件没有改组,而是排序。因此,仅对同一类图像进行测试,并且从同一类的图像中学习参数,从而非常快速地获得100%的准确度。