通过所有培训过程,准确度为0.1。我做错了什么?
模型,求解器和日志的一部分: https://gist.github.com/yutkin/3a147ebbb9b293697010
png格式的拓扑:
P.S。我在AWS上使用最新版本的Caffe和g2.2xlarge实例。
答案 0 :(得分:2)
您正在处理有10个类的CIFAR-10数据集。当网络训练开始时,第一个猜测通常是随机的,因为你的准确度是1/N
,其中N
是类的数量。在您的情况下,它是1/10
,即0.1
。如果您的准确性随着时间的推移保持不变,则意味着您的网络无法学习任何东西。这可能是由于学习率很高而发生的。培训网络的基本思想是计算损失并将其传播回去。梯度乘以学习率并加到当前的权重和偏差中。如果学习率太大,您可能每次都超过局部最小值。如果它太小,收敛会很慢。我看到你的base_lr
在这里是0.01。就我的经验而言,这有点大。您可能希望在开始时将其保持在0.001,然后在您发现准确性没有提高时继续将其减少10倍。但是,任何低于0.00001的东西通常都不会产生太大影响。诀窍是观察培训的进度并在需要时进行参数更改。
答案 1 :(得分:0)
我知道线程很老但也许我的回答可以帮到某个人。我经历了同样的问题,准确性随机猜测。
有助于将精确层之前的最后一层的输出数量设置为标签数量。
在您的情况下应该是ip2
图层。打开网络的模型定义,并将num_outputs
设置为标签数量。
有关更多信息,请参阅第4.4节:A Practical Introduction to Deep Learning with Caffe and Python