如何找到火炬张量的多个最大指数?

How can I find multiple maximum indices of a torch tensor?

如果我有一个具有多个最大值的张量,我怎样才能获得所有最大值的索引。我试过 torch.argmax(tensor) 但它只给了我第一个索引。

>>> a_list = [3,23,53,32,53]
>>> a_tensor = torch.Tensor(a_list)
>>> a_tensor
tensor([ 3., 23., 53., 32., 53.])
>>> torch.max(a_tensor)
tensor(53.)
>>> torch.argmax(a_tensor)
tensor(2)

我有以下功能可以做到这一点,但想知道是否有更有效的方法:

def max_tensor_indices(tensor_t,max_value):
  tensor_list=tensor_t[0]
  indices_list=[]
  for i in range(len(tensor_list)):
     if tensor_list[i]==max_value:
         indices_list.append(i)
  return indices_list

找到最大值,然后找到所有具有该值的元素。

(x == torch.max(x)).nonzero()

注意:nonzero 也可以用 as_tuple=True 调用,这可能会有帮助。