PyTorch深度學習總結
第五章 PyTorch中張量(Tensor)統(tǒng)計操作
前言
上文介紹了PyTorch中張量(Tensor)的計算操作,本文將介紹張量的統(tǒng)計操作。
一、最值查找
函數(shù) | 描述 |
---|---|
torch.max() |
找出張量中的最大值
|
torch.argmax() |
輸出最大值所在位置
|
torch.min() |
找出張量中的最小值
|
torch.argmin() |
輸出最小值所在位置
|
torch.sort() |
對一維張量或多維(每個維度單獨 )進行排序 |
torch.topk(A, k) |
根據指定值k ,計算出張量A取值為前k大 的值,并顯示所在位置 |
torch.kthvalue(A, k) |
根據指定值k ,計算出張量A取值為第k小 的值,并顯示所在位置 |
創(chuàng)建張量:
# 引入庫 import torch # 創(chuàng)建張量A A = torch.arange(2., 8.).reshape(2,3) print(A)
輸出結果為:tensor([[2, 3, 4], [5, 6, 7]])
測試函數(shù):
print(A.max()) print(A.argmax()) print(A.min()) print(A.argmin())
輸出結果為(含注釋):
tensor(7.)
tensor(5) # 0-5的最后一位
tensor(2.)
tensor(0) # 0-5的第一位
torch.sort()
創(chuàng)建隨機張量B:# 創(chuàng)建隨機張量B B = torch.randperm(15).reshape(3, 5) # torch.randperm(n)可以生成有n個0-10之間整數(shù)組成的張量 print(B)
輸出結果為:
tensor(
[[13, 9, 1, 2, 0],
[ 4, 14, 12, 3, 7],
[ 5, 6, 8, 11, 10]])
對張量B進行排序:
# 升序輸出 print(B.sort()) # 分別輸出排序后的值,以及該值在原索引中不同維度的位置(列數(shù))
輸出結果為:
torch.return_types.sort(
values=tensor([[ 0, 1, 2, 9, 13],
[ 3, 4, 7, 12, 14],
[ 5, 6, 8, 10, 11]]),
indices=tensor([[4, 2, 3, 1, 0],
[3, 0, 4, 2, 1],
[0, 1, 2, 4, 3]]))
# 降序輸出 print(B.sort(descending=True))
輸出結果為:
torch.return_types.sort(
values=tensor([[13, 9, 2, 1, 0],
[14, 12, 7, 4, 3],
[11, 10, 8, 6, 5]]),
indices=tensor([[0, 1, 3, 2, 4],
[1, 2, 4, 0, 3],
[3, 4, 2, 1, 0]]))
測試函數(shù)
torch.topk()
:# 選取每個維度最大和次大的值,及其位置 print(B.topk(2))
輸出結果為:
torch.return_types.topk(
values=tensor([[13, 9],
[14, 12],
[11, 10]]),
indices=tensor([[0, 1],
[1, 2],
[3, 4]]))
# 選取2-dim維度前2大的值及其位置 print(B) print(B.topk(2, dim=0)) # 每列最大的兩個值
輸出結果為(含注釋):
tensor([[13, 9, 1, 2, 0],
[ 4, 14, 12, 3, 7],
[ 5, 6, 8, 11, 10]])
torch.return_types.topk(
values=tensor([[13, 14, 12, 11, 10],
[ 5, 9, 8, 3, 7]]),
indices=tensor([[0, 1, 1, 2, 2],
[2, 0, 2, 1, 1]])) # indices表示對應元素的行數(shù)
# 選取2-dim最大和次大的值,及其位置 print(B.topk(2, dim=1)) # 與默認情況相同默認情況
輸出結果為:
torch.return_types.topk(
values=tensor([[13, 9],
[14, 12],
[11, 10]]),
indices=tensor([[0, 1],
[1, 2],
[3, 4]]))
測試函數(shù)
torch.kthvalue()
:# 選取每個維度第2小的值及其位置 print(B) print(B.kthvalue(2))
輸出結果為:
tensor([[13, 9, 1, 2, 0],
[ 4, 14, 12, 3, 7],
[ 5, 6, 8, 11, 10]])
torch.return_types.kthvalue(
values=tensor([1, 4, 6]),
indices=tensor([2, 0, 1]))
二、特殊值查詢
函數(shù) | 描述 |
---|---|
torch.mean(A, dim=0) |
根據指定維度計算均值 |
torch.sum(A, dim=0) |
根據指定維度求和 |
torch.cumsum(A, dim=0) |
根據指定維度計算累加和 |
torch.median(A, dim=0) |
根據指定維度計算中位數(shù) |
torch.cumprod(A, dim=0) |
根據指定維度計算乘積 |
torch.std(A, dim=0) |
根據指定維度計算標準差 |
測試函數(shù)(維度0):
print(A) print(A.mean(dim=0)) print(A.sum(dim=0)) print(A.cumsum(dim=0)) print(A.median(dim=0)) print(A.cumprod(dim=0)) print(A.std(dim=0))
輸出結果為(含注釋):
tensor([[2., 3., 4.],
[5., 6., 7.]]) # 張量A
tensor([3.5000, 4.5000, 5.5000]) # 每列均值
tensor([ 7., 9., 11.]) # 每列求和
tensor([[ 2., 3., 4.],
[ 7., 9., 11.]]) # 每列累加求和
torch.return_types.median(
values=tensor([2., 3., 4.]),
indices=tensor([0, 0, 0])) # 每列中位數(shù)及索引
tensor([[ 2., 3., 4.],
[10., 18., 28.]]) # 每列累乘
tensor([2.1213, 2.1213, 2.1213]) # 每列標準差文章來源:http://www.zghlxwxcb.cn/news/detail-833577.html
print(A) print(A.mean(dim=1)) print(A.sum(dim=1)) print(A.cumsum(dim=1)) print(A.median(dim=1)) print(A.cumprod(dim=1)) print(A.std(dim=1))
輸出結果為(含注釋):
tensor([[2., 3., 4.],
[5., 6., 7.]]) # 張量A
tensor([3., 6.]) # 每行均值
tensor([ 9., 18.]) # 每行求和
tensor([[ 2., 5., 9.],
[ 5., 11., 18.]]) # 按行逐個累加
torch.return_types.median(
values=tensor([3., 6.]),
indices=tensor([1, 1])) # 每行中位數(shù)
tensor([[ 2., 6., 24.],
[ 5., 30., 210.]]) # 按行逐個累乘
tensor([1., 1.]) # 每行標準差文章來源地址http://www.zghlxwxcb.cn/news/detail-833577.html
到了這里,關于【PyTorch】PyTorch中張量(Tensor)統(tǒng)計操作的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!