1. 程式人生 > 實用技巧 >Pytorch和numpy中的max操作

Pytorch和numpy中的max操作

1.np.max

返回numpy陣列中的最大值,預設axis為None,此時返回所有元素中的最大值,若進行初始化,則選擇axis維度下的最值,例如對於矩陣來說,axis=0表示列最大值,axis=1表示行最大值

arr = np.random.randn(2, 2)
print(arr)
print(np.max(arr))
print(np.max(arr, axis=1))

結果:

[[ 2.49654859   -0.21022188]
[ 0.70946971    0.84199004]]
2.496548592171631
[2.49654859    0.84199004]

2.np.maximum

將傳入的陣列中的每一個元素與第二個引數進行比較,取值為二者中的較大者

arr = np.random.randn(2, 2)
print(arr)
print(np.maximum(arr, 1))

結果:

[[ 2.49654859  -0.21022188]
[ 0.70946971  0.84199004]]

[[2.49654859   1. ]
[1.        1. ]]

3.np.argmax

返回axis對應維度的最大元素的位置,預設None,文件說明如下

意思就是把矩陣展開,返回下標

arr = np.random.randn(2, 2)
print(arr)
print(np.argmax(arr, 1))
print(np.argmax(arr))

結果:

[[ 2.49654859  -0.21022188]
[ 0.70946971  0.84199004]]

[0 1]

0

4.torch.max

效果相當於max和argmax的組合,會返回兩個返回值,返回值1表示對應axis維度最大的值,返回值2表示應axis維度取最大值的位置

arr = np.random.randn(2, 2)
print(arr)
print(torch.max(torch.tensor(arr), 1))
_, a = torch.max(torch.tensor(arr), 1)
print(a)

結果:

[[ 2.49654859  -0.21022188]
[ 0.70946971  0.84199004]]

torch.return_types.max(
values=tensor([1.0242, 0.2471], dtype=torch.float64),
indices=tensor([1, 0]))
tensor([1, 0])

PS:_的作用是忽略掉返回值1,因為在使用torch進行預測的時候,我們不關心具體的值是多少,只是想知道預測的標籤。

5.torch.argmax

torch的返回值2,也即是下標,就是用torch.argmax計算出來的

arr = np.random.randn(2, 2)
print(arr)
print(torch.argmax(torch.tensor(arr),1))
print(a)

結果:

[[ 2.49654859  -0.21022188]
[ 0.70946971  0.84199004]]

tensor([1, 0])