深度学习准确率计算accuracy=torch.eq(y_predict,y_truth.squeeze(dim=-1)).float().mean()

Pytorch中准确率的计算方法解读之:

accuracy=torch.eq(y_predict,y_truth.squeeze(dim=-1)).float().mean()

深度学习过程中经常设计准确率的计算,一般的计算方法都是将预测正确的个数与总的个数相除进行求解,此方法简单,但不足够简洁。因此可以如下更简洁的方法进行计算:

accuracy=torch.eq(y_predict,y_truth.squeeze(dim=-1)).float().mean()

在这里边y_predict为预测标签值,y_truth为真实标签值。

# 首先设定预测标签和真实标签的值
y_predict=torch.tensor([1,3,3,4,4,6,7,8,9,10])
y_truth=torch.arange(1,11).view(10,1)
# 打印结果如下
print(y_predict,y_truth)
tensor([ 1,  3,  3,  4,  4,  6,  7,  8,  9, 10])
tensor([[ 1],
        [ 2],
        [ 3],
        [ 4],
        [ 5],
        [ 6],
        [ 7],
        [ 8],
        [ 9],
        [10]])

由于y_truth通常为一个二维张量,需要将最后一维去除。

y_squeeze=y_truth.squeeze(dim=-1)#若最后一维为1则去除
# 打印降维后的结果
print(y_squeeze)
tensor([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

紧接着利用torch.eq()计算,依次比较y_predict与y_truth中的每一个元素,相同返回True不同返回Flase,最后经过torch.eq()计算得到一个bool型张量。

# torch.eq()函数,相同为True 不同为Flase
print(torch.eq(y_predict,y_truth.squeeze(dim=-1)))
tensor([ True, False,  True,  True, False,  True,  True,  True,  True,  True])

紧接着通过.float()将数据类型转换成float型。

print(torch.eq(y_predict,y_truth.squeeze(dim=-1)).float())
tensor([1., 0., 1., 1., 0., 1., 1., 1., 1., 1.])

最后利用torch.mean()函数即可得到最后的准确率,其中mean()的计算过程为将所有元素相加再除以元素的总个数。

print(torch.eq(y_predict,y_truth.squeeze(dim=-1)).float().mean())
tensor(0.8000)#准确率为80%
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值