如何找到火炬张量的多个最大指数?
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
调用,这可能会有帮助。
如果我有一个具有多个最大值的张量,我怎样才能获得所有最大值的索引。我试过 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
调用,这可能会有帮助。