我正在训练神经网络来解决多标签分类问题。我有两行A和B,大小为BxL(B =批处理大小,L =标签数量),其中A是小批量生产的实际标签,B是我的模型做出的预测,类似这样:
A = array([[0., 1., 0.],
[0., 1., 1.],
[0., 1., 0.],
[0., 0., 0.]])
B = array([[1., 1., 0.],
[0., 1., 1.],
[0., 0., 0.],
[0., 1., 0.]])
我想计算正确分类的样本数(即,A和B中相等的行数)
我想知道是否有一种方法可以使用张量/ numpy并行函数...
类似
sum(torch.eq(A,B, axis=0)) # that doesn't exists
答案 0 :(得分:0)
您可以将numpy
与all
一起使用:
np.sum((A == B).all(1))
#1
这通过搜索每行中的所有值是否匹配来工作。
>>> A == B
array([[False, True, True],
[ True, True, True],
[ True, False, True],
[ True, False, True]])
为您提供元素匹配的位置,然后all(axis=1)
返回所有值均为True
的行的布尔值:
>>> (A == B).all(1)
array([False, True, False, False])
表明索引1
处的行是两个数组之间的完全匹配。
然后,对布尔数组求和即可得出此类行的数量。