【matcovnet学习笔记】objective,top1error,top5error详解

【matcovnet学习笔记】objective,top1error,top5error详解

排名前1和前5的错误率是衡量某些解决方案成功与否的重要单位
,要理解这三个概念,关键是要看懂下面这个多类误差函数
在这里插入图片描述

先大致介绍一下这三个概念

top1就是你预测的label 取最后概率向量里面最大的那一个作为预测结果,你的预测结果中概率最大的那个类必须是正确类别才算预测正确。
top5就是最后概率向量最大的前五名中出现了正确概率即为预测正确。
转自知乎大神的例子
obj为一个batch里所有样本的loss,相应地top1和top5分别为一个batch里所有样本的top1和top5误差之和;
stats保存的是第1个batch上得到的error。第1个batch上结束之后,会在第2个batch上优化。
同样地,此时error数组保存的是第2个batch的loss,top1和top5,需要注意的是此时的stats数组是2个batch的error数组求和

那么具体训练过程是什么样子的呢

以高光谱数据集PaviaU为例,batchsize为10,
 
 在这个例子中的关键命令是vl_simplenn,一个包装器,它将CNN网络和预处理图像im_作为输入,并产生结果的结构res,这里只是简单介绍一下,有需要的话,专门开个贴子细讲。
 在这里插入图片描述
经过这个函数的运行,完成前向反向传播,产生一个res数组
在这里插入图片描述
紧接着,
在这里插入图片描述
第一个batch时,sum([error, […这里的error可以忽略

sum(double(gather(res(end).x))) ; 结果是 第一个batch中所有的loss值,求得为21.9691

reshape(params.errorFunction(params, labels, res),[],1) ; ]],2)
params.errorFunction因为之前设置的误差函数是多类误差函数,所以这里调用多类误差函数
求出8;4
所以第一个batch运行得到的error为
在这里插入图片描述
其中一个是objective损失值,一个是top1,一个是top5。当然这是10个样本情况下的,仍然需要除以样本数。求得:
在这里插入图片描述
上面对应的代码:在这里插入图片描述

下面分析一下多类误差函数的计算过程

解析在注释里面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
得到error在这里插入图片描述
第二epoch:还是这里
在这里插入图片描述
sum(double(gather(res(end).x))) ;两个batch合起来的loss 值 21.97
reshape(params.errorFunction(params, labels, res),[],1) ; 两个batch合起来的top1,top5值
分别为 9;6
在这里插入图片描述
上面一大段执行完后,可以看到,第一个epoch之后的值error与第二个epoch执行后的误差加了起来,形成一个新的error
在这里插入图片描述
第二个batch 的error还要除以总的样本数,20
最终结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值