Caffe中的多层精度

6

我正在使用nVidia DIGITS和Caffe来对大量图像进行分类。当我使用标准网络和我构建的网络时,一切都很顺利。

然而,当我运行GoogleNet示例时,我可以看到几个准确度层的结果。在CNN中有多个准确度层是怎么回事?拥有多个损失层是很容易理解的,但是多个准确度值意味着什么?我在学习过程中得到了几个准确度图表。类似于这张图片:learning process

lossX-top1lossX-top5表示准确度层。我从prototxt中了解到这些评估top 1和top 5准确度值,但是lossX准确度层是什么意思?

即使其中一些图表收敛到约98%,但是当我在'validation.txt'上手动测试训练好的网络时,我得到的值明显较低(与较低的三个准确度图表相对应)。

有人能为此提供一些解释吗?如何有多个具有不同值的准确度层?

1个回答

4
如果仔细查看'train_val.prototxt',您会发现在不同层级的主“路径”上确实有几个精度层分支。在inception 4a层之后评估loss1,在inception 4d之后评估loss2,而loss3是网络顶部的损失值。将损失(和精度层)引入深度网络的中间表示允许更快速地进行梯度传播训练。这些中间精度测量中间表示已经收敛的程度。

2
@IgorŠevo 这取决于您的 deploy.prototxt。 您可以决定从哪个分类器层读取类概率。 - Shai
我是否误解了“Accuracy”层的含义?它用于对验证集(如果在prototxt中设置)进行分类,并返回分类准确性吗? - Igor Ševo
1
@IgorŠevo 每个准确性层都衡量不同分类层(softmax层输出)的验证准确性。 - Shai
只有一个问题。我如何在deploy.prototxt中选择分类器?通过将层命名为“prob”吗? - Igor Ševo
2
@IgorŠevo 这取决于您用于分类的接口是什么,Python包装器classifier.py默认输出最后一个输出层(没有其他层将其“顶部”用作“底部”...)。但是,您可以给Python分类器提供一组blob名称,并在每个“forward”传递中获得多个输出。 - Shai
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接