最近在使用神经网络进行分类时,遇到一个问题时,当使用神经网络得出了一组预测标签之后,与真实标签比较想求准确率(accuracy)时非常不方便。在网上看了不少方法,有使用for循环进行迭代的,一个比一个很麻烦。今天发现了一个简单的方法,记录一下。
说明一下,numpy应该无法实现这种功能,我目前没有看到。(ps:以前用matlab时有这种自带函数)。
下面开始讲正题。
上代码。
import numpy as np
import torch
labels=np.random.randint(1,10,5)
print(labels)
prediction=np.random.randint(1,10,5)
print(prediction)
labels=torch.from_numpy(labels)
prediction=torch.from_numpy(prediction)
right_data=prediction.eq(labels.view_as(prediction)).numpy().sum()
print(right_data)
#right_data是预测标签和真实标签中元素相同的个数
输出结果
[8 3 1 9 4]
[3 3 6 2 5]
1
注意,这里是将numpy数据先转化为tensor后再进行的。代码中的 eq 和 view_as 函数是tensor的专有函数。
这个时候就很方便求准确率accuracy了。
accuracy=right_data/len(labels)
print(accuracy)
输出结果
0.2
结束,如果您觉得有用的话,帮忙点个赞。