Caffe 中的精度保持在 0.1 并且没有改变

Accuracy in Caffe keeps on 0.1 and does not change

整个训练过程,准确率为0.1。我做错了什么?

此处的模型、求解器和部分日志: https://gist.github.com/yutkin/3a147ebbb9b293697010

png 格式的拓扑图:

P.S。我在 AWS 上使用最新版本的 Caffe 和 g2.2xlarge 实例。

您正在处理包含 10 个 类 的 CIFAR-10 数据集。当开始训练网络时,第一次猜测通常是随机的,因此您的准确率是 1/N,其中 N 是 类 的数量。在您的情况下,它是 1/10,即 0.1。如果您的准确性随着时间的推移保持不变,则意味着您的网络没有学习任何东西。这可能是由于较大的学习率而发生的。训练网络的基本思想是计算损失并将其传播回来。梯度乘以学习率并添加到当前的权重和偏差中。如果学习率太大,你可能每次都超过局部最小值。如果太小,收敛会很慢。我看到你这里的 base_lr 是 0.01。就我的经验而言,这有点大。您可能希望在开始时将其保持在 0.001,然后在您观察到准确性没有提高时继续将其降低 10 倍。但是低于 0.00001 的任何值通常都不会产生太大影响。诀窍是观察训练的进度并在需要时更改参数。

我知道这个话题已经很老了,但也许我的回答对某些人有帮助。我遇到了同样的问题,其准确性就像随机猜测一样。

有用的是将准确度层之前的最后一层的输出数设置为标签数。

在您的情况下,应该是 ip2 层。打开网络的模型定义并将 num_outputs 设置为标签数。

有关详细信息,请参阅第 4.4 节:A Practical Introduction to Deep Learning with Caffe and Python