numpy中两个矩阵之间等于多少行

时间:2018-11-19 21:51:39

标签: python numpy matrix torch

我正在训练神经网络来解决多标签分类问题。我有两行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

1 个答案:

答案 0 :(得分:0)

您可以将numpyall一起使用:

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处的行是两个数组之间的完全匹配。

然后,对布尔数组求和即可得出此类行的数量。