为了方便说明,假设epoch数目为1,有2个batch,cnn_train函数在每一个batch上优化结束之后会分别得到两个数组:
error=[obj, top1, top5]
stats=sum([stats,[0 ; error]],2)
error:obj为一个batch里所有样本的loss,相应地top1和top5分别为一个batch里所有样本的top1和top5误差之和;
stats:在第1个batch上优化结束之后,保存的是第1个batch上得到的error数组。在第2个batch上优化结束后,保存的是2个batch的error数组之和。
matlab命令窗口输出的形如“training: epoch 01: batch 1/600: 174.4 Hz obj:2.3 top1e:0.88 top5e:0.39 [100/100]”的结果是如何计算的,如下:
obj=(stats数组的obj)/n,其中n=当前batch*batchSize,比如优化的是第2个batch的话就是n=2*batchSize,由此可以看出,其实n就是样本数目。top1和top5计算方法相同。
Top-5错误率
即对一个图片,如果概率前五中包含正确答案,即认为正确。
Top-5 = (正确标记 不在 模型输出的前5个最佳标记中的样本数)/ 总样本数;
Top-1错误率
即对一个图片,如果概率最大的是正确答案,才认为正确。
Top-1 = (正确标记 与 模型输出的最佳标记不同的样本数)/ 总样本数;