Python——torch.max & torch.max( )[ ].data & torch.max( )[ ].numpy 用法

Python——torch.max & torch.max()[ ].data & torch.max()[ ].numpy 用法

  • 1 介绍
  • 2 举例

1 介绍

(1) torch.max(a): 返回输入a中所有元素的最大值。
(2) torch.max(a, 0): 返回每一列的最大值,且返回索引(返回最大元素在各列的行索引)。
(3) torch.max(a, 1): 返回每一行的最大值,且返回索引(返回最大元素在各行的列索引)。
(4) torch.max()[0]: 只返回最大值。
(5) torch.max()[1]: 只返回最大值的索引。
(6) torch.max()[0].data: 只返回variable中的数据部分(去掉Variable containing)。
(7) torch.max()[0].data.numpy(): 把数据转化成 numpy ndarray。
(8) torch.max()[0].numpy(): 把数据转化成 numpy ndarray。

Ps: torch.max()[0].data.numpy() 和 torch.max()[0].numpy() 效果一样。
在有的地方我们会看到 torch.max()[0].data.numpy() 的写法,这是因为在早期的Pytorch版本中,variable 和 tensor 是不同的数据格式,variable 可以进行反向传播,tensor 不可以,需要将 variable 转变成 tensor 再转变成 numpy。现在的版本已经将 variable 和 tensor 合并,所以只用 torch.max()[1].numpy() 就可以了。

2 举例

新建Python文件,输入

import torch
a = torch.tensor([[1, 5, 62, 54], [2, 6, 2, 6], [2, 65, 2, 6]])
print('a:', a,
      '\n\ntorch.max(a):', torch.max(a),
      '\n\ntorch.max(a, 0):', torch.max(a, 0),
      '\n\ntorch.max(a, 0)[0]:', torch.max(a, 0)[0],
      '\n\ntorch.max(a, 0)[1]:', torch.max(a, 0)[1],
      '\n\ntorch.max(a, 0)[1].data:', torch.max(a, 0)[1].data,
      '\n\ntorch.max(a, 0)[1].data.numpy():', torch.max(a, 0)[1].data.numpy(),
      '\n\ntorch.max(a, 0)[1].numpy():', torch.max(a, 0)[1].numpy(),
      '\n\ntorch.max(a, 1):', torch.max(a, 1))

得到

a: tensor([[ 1,  5, 62, 54],
        [ 2,  6,  2,  6],
        [ 2, 65,  2,  6]]) 

torch.max(a): tensor(65) 

torch.max(a, 0): torch.return_types.max(
values=tensor([ 2, 65, 62, 54]),
indices=tensor([2, 2, 0, 0])) 

torch.max(a, 0)[0]: tensor([ 2, 65, 62, 54]) 

torch.max(a, 0)[1]: tensor([2, 2, 0, 0]) 

torch.max(a, 0)[1].data: tensor([2, 2, 0, 0]) 

torch.max(a, 0)[1].data.numpy(): [2 2 0 0] 

torch.max(a, 0)[1].numpy(): [2 2 0 0] 

torch.max(a, 1): torch.return_types.max(
values=tensor([62,  6, 65]),
indices=tensor([2, 3, 1]))

你可能感兴趣的:(Python)