我是 caffe 的新手,在 MNIST 示例中,我认为标签应与softmax图层进行比较,但不是{{1 }}。
我想知道为什么使用lenet.prototxt
结果和标签来获得准确性,这似乎是不合理的。是因为我错过了图层中的某些内容吗?
答案 0 :(得分:1)
最后一个内积层的输出维数是10,它对应于问题的类数(数字0~9)。 损失层采用两个blob,第一个是预测(ip2),第二个是数据层提供的标签。
loss_layer = SoftmaxLossLayer(name="loss", bottoms=[:ip2,:label])
它不会产生任何输出 - 它只是计算损失函数值,在反向传播开始时报告它,并启动相对于ip2的梯度。这是所有魔法开始的地方。 训练之后(在TEST阶段),在最后一层中,期望结果来自乘法权重和ip1(在最后一层计算);并且每个类(10个神经元中的一个)具有最大值被选择。