tensor在不同维度比较大小,并取最大值
# 给定一个三维矩阵--[batch_size, n_tags, n_tags]
import torch
score = torch.tensor([[ [1,2,7],
[4,8,6],
[3,5,9]],
[ [8,1,3],
[6,9,4],
[2,5,7]]])
best_score, best_dst = score.max(0)
print(best_score)
print(best_dst)
print('---------------------------')
best_score, best_dst = score.max(1)
print(best_score)
print(best_dst)
print('---------------------------')
best_score, best_dst = score.max(2)
print(best_score)
print(best_dst)
print('---------------------------')
'''
score.max(0)在batch维度-第0维度进行比较:
tensor([[8, 2, 7],
[6, 9, 6],
[3, 5, 9]])
tensor([[1, 0, 0],
[1, 1, 0],
[0, 1, 0]])
如[1,2,7]和[8,1,3]相比较,得到[8, 2, 7],对应batch位置为[1, 0, 0]。
'''
'''
score.max(1)在第1维度进行比较:
tensor([[4, 8, 9],
[8, 9, 7]])
tensor([[1, 1, 2],
[0, 1, 2]])
如 [[1,2,7],
[4,8,6],
[3,5,9]]中的[1,4,3]、[2,8,5]和[7,6,9]相比较,得到[4,8,9],对应位置为[1, 1, 2]
'''
'''
score.max(2)在第2维度进行比较:
tensor([[7, 8, 9],
[8, 9, 7]])
tensor([[2, 1, 2],
[0, 1, 2]])
如 [[1,2,7],
[4,8,6],
[3,5,9]]中的[1,2,7]、[4,8,6]和[3,5,9]相比较,得到[7,8,9],对应位置为[2, 1, 2]
'''