计算目标张量的目标维度的最大值,返回两个张量,第一个values为计算后的最大值,第二个indices为次最大值的索引
函数参数
torch.max(input, dim, max=None, max_indices=None) -> (Tensor, LongTensor)
input 为需要进行操作的张量,dim进行操作的维度数
有一下两种写法
testInupt = torch.tensor([
[
[1,22,3,4,5],
[2,3,44,5,6],
[3,4,5,66,7],
[4,5,6,7,88],
],
[
[11,2,3,4,5],
[2,33,4,5,6],
[3,4,54,6,7],
[4,5,6,77,8],
],
])torch.max(testInupt,0)
testInupt.max(0)
以上文代码为例,一个[2,4,5]的张量,分别进行0,1,2维的最大值
print("a.max(0):",a.max(0))
——————————————————
a.max(0): torch.return_types.max(
values=tensor([ [11, 22, 3, 4, 5],
[ 2, 33, 44, 5, 6],
[ 3, 4, 54, 66, 7],
[ 4, 5, 6, 77, 88] ]),
indices=tensor([ [1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0] ]))
对0维进行求最大值,那么0维度就会合并为一个并消失,会对两个[4,5]的张量进行逐个比对并取最大值,最后去掉为1的0维度,变成一个[4,5]的张量, 如,[11,22,3,4,5]中11取自第一个张量,22取自第二个张量,于是在索引中就是[0,1,0,0,0]
print("a.max(1):",a.max(1))
___________________________________________
a.max(1): torch.return_types.max(
values=tensor([ [ 4, 22, 44, 66, 88],
[11, 33, 54, 77, 8] ]),
indices=tensor([ [3, 0, 1, 2, 3],
[0, 1, 2, 3, 3] ]))
对1维进行求最大值,同理的1维将被合并成一个值为1的维度并被压缩掉,最后变成一个[2,5]的张量,也就是说4个1维的张量将互相逐个比对元素并合并,比如[ 4, 22, 44, 66, 88]中,4来自第4个1维张量,22来自第1个,44来自第二个,66来自第3个,88来自第4个,所以对应的索引张量为3, 0, 1, 2, 3]
print("a.max(2):",a.max(2))
——————————————————————————————————
a.max(2): torch.return_types.max(
values=tensor([ [22, 44, 66, 88],
[11, 33, 54, 77] ]),
indices=tensor([ [1, 2, 3, 4],
[0, 1, 2, 3] ]))
对2维张量求最大值,那么也就是最后变成一个[2,4]的形状