上接:python:機(jī)器學(xué)習(xí)模塊PyTorch【上】
Reduction Ops
torch.cumprod
torch.cumprod(input, dim, out=None) → Tensor
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 累積積操作的維度
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(10)
>>> a
1.1148
1.8423
1.4143
-0.4403
1.2859
-1.2514
-0.4748
1.1735
-1.6332
-0.4272
[torch.FloatTensor of size 10]
>>> torch.cumprod(a, dim=0)
1.1148
2.0537
2.9045
-1.2788
-1.6444
2.0578
-0.9770
-1.1466
1.8726
-0.8000
[torch.FloatTensor of size 10]
>>> a[5] = 0.0
>>> torch.cumprod(a, dim=0)
1.1148
2.0537
2.9045
-1.2788
-1.6444
-0.0000
0.0000
0.0000
-0.0000
0.0000
[torch.FloatTensor of size 10]
torch.cumsum
torch.cumsum(input, dim, out=None) → Tensor
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 累積和操作的維度
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(10)
>>> a
-0.6039
-0.2214
-0.3705
-0.0169
1.3415
-0.1230
0.9719
0.6081
-0.1286
1.0947
[torch.FloatTensor of size 10]
>>> torch.cumsum(a, dim=0)
-0.6039
-0.8253
-1.1958
-1.2127
0.1288
0.0058
0.9777
1.5858
1.4572
2.5519
[torch.FloatTensor of size 10]
torch.dist
torch.dist(input, other, p=2, out=None) → Tensor
返回 (input
- other
) 的 p
范數(shù) 猾骡。
參數(shù):
- input (Tensor) – 輸入張量
- other (Tensor) – 右側(cè)輸入張量
- p (float, optional) – 所計(jì)算的范數(shù)
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> x = torch.randn(4)
>>> x
0.2505
-0.4571
-0.3733
0.7807
[torch.FloatTensor of size 4]
>>> y = torch.randn(4)
>>> y
0.7782
-0.5185
1.4106
-2.4063
[torch.FloatTensor of size 4]
>>> torch.dist(x, y, 3.5)
3.302832063224223
>>> torch.dist(x, y, 3)
3.3677282206393286
>>> torch.dist(x, y, 0)
inf
>>> torch.dist(x, y, 1)
5.560028076171875
torch.mean
torch.mean(input) → float
返回輸入張量所有元素的均值措嵌。
參數(shù): input (Tensor) – 輸入張量
例子:
>>> a = torch.randn(1, 3)
>>> a
-0.2946 -0.9143 2.1809
[torch.FloatTensor of size 1x3]
>>> torch.mean(a)
0.32398951053619385
torch.mean(input, dim, out=None) → Tensor
返回輸入張量給定維度dim
上每行的均值雨饺。
輸出形狀與輸入相同,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – the dimension to reduce
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4, 4)
>>> a
-1.2738 -0.3058 0.1230 -1.9615
0.8771 -0.5430 -0.9233 0.9879
1.4107 0.0317 -0.6823 0.2255
-1.3854 0.4953 -0.2160 0.2435
[torch.FloatTensor of size 4x4]
>>> torch.mean(a, 1)
-0.8545
0.0997
0.2464
-0.2157
[torch.FloatTensor of size 4x1]
torch.median
torch.median(input, dim=-1, values=None, indices=None) -> (Tensor, LongTensor)
返回輸入張量給定維度每行的中位數(shù)厉颤,同時(shí)返回一個(gè)包含中位數(shù)的索引的LongTensor
。
dim
值默認(rèn)為輸入張量的最后一維厢洞。 輸出形狀與輸入相同飒焦,除了給定維度上為1.
注意: 這個(gè)函數(shù)還沒(méi)有在torch.cuda.Tensor
中定義
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 縮減的維度
- values (Tensor, optional) – 結(jié)果張量
- indices (Tensor, optional) – 返回的索引結(jié)果張量
>>> a
-0.6891 -0.6662
0.2697 0.7412
0.5254 -0.7402
0.5528 -0.2399
[torch.FloatTensor of size 4x2]
>>> a = torch.randn(4, 5)
>>> a
0.4056 -0.3372 1.0973 -2.4884 0.4334
2.1336 0.3841 0.1404 -0.1821 -0.7646
-0.2403 1.3975 -2.0068 0.1298 0.0212
-1.5371 -0.7257 -0.4871 -0.2359 -1.1724
[torch.FloatTensor of size 4x5]
>>> torch.median(a, 1)
(
0.4056
0.1404
0.0212
-0.7257
[torch.FloatTensor of size 4x1]
,
0
2
4
1
[torch.LongTensor of size 4x1]
)
torch.mode
torch.mode(input, dim=-1, values=None, indices=None) -> (Tensor, LongTensor)
返回給定維dim
上,每行的眾數(shù)值悼沿。 同時(shí)返回一個(gè)LongTensor
等舔,包含眾數(shù)職的索引。dim
值默認(rèn)為輸入張量的最后一維糟趾。
輸出形狀與輸入相同慌植,除了給定維度上為1.
注意: 這個(gè)函數(shù)還沒(méi)有在torch.cuda.Tensor
中定義
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 縮減的維度
- values (Tensor, optional) – 結(jié)果張量
- indices (Tensor, optional) – 返回的索引張量
例子:
>>> a
-0.6891 -0.6662
0.2697 0.7412
0.5254 -0.7402
0.5528 -0.2399
[torch.FloatTensor of size 4x2]
>>> a = torch.randn(4, 5)
>>> a
0.4056 -0.3372 1.0973 -2.4884 0.4334
2.1336 0.3841 0.1404 -0.1821 -0.7646
-0.2403 1.3975 -2.0068 0.1298 0.0212
-1.5371 -0.7257 -0.4871 -0.2359 -1.1724
[torch.FloatTensor of size 4x5]
>>> torch.mode(a, 1)
(
-2.4884
-0.7646
-2.0068
-1.5371
[torch.FloatTensor of size 4x1]
,
3
4
2
0
[torch.LongTensor of size 4x1]
)
torch.norm
torch.norm(input, p=2) → float
返回輸入張量input
的p 范數(shù)义郑。
參數(shù):
- input (Tensor) – 輸入張量
- p (float,optional) – 范數(shù)計(jì)算中的冪指數(shù)值
例子:
>>> a = torch.randn(1, 3)
>>> a
-0.4376 -0.5328 0.9547
[torch.FloatTensor of size 1x3]
>>> torch.norm(a, 3)
1.0338925067372466
torch.norm(input, p, dim, out=None) → Tensor
返回輸入張量給定維dim
上每行的p 范數(shù)蝶柿。 輸出形狀與輸入相同,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
- p (float) – 范數(shù)計(jì)算中的冪指數(shù)值
- dim (int) – 縮減的維度
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4, 2)
>>> a
-0.6891 -0.6662
0.2697 0.7412
0.5254 -0.7402
0.5528 -0.2399
[torch.FloatTensor of size 4x2]
>>> torch.norm(a, 2, 1)
0.9585
0.7888
0.9077
0.6026
[torch.FloatTensor of size 4x1]
>>> torch.norm(a, 0, 1)
2
2
2
2
[torch.FloatTensor of size 4x1]
torch.prod
torch.prod(input) → float
返回輸入張量input
所有元素的積非驮。
參數(shù):input (Tensor) – 輸入張量
例子:
>>> a = torch.randn(1, 3)
>>> a
0.6170 0.3546 0.0253
[torch.FloatTensor of size 1x3]
>>> torch.prod(a)
0.005537458061418483
torch.prod(input, dim, out=None) → Tensor
返回輸入張量給定維度上每行的積交汤。 輸出形狀與輸入相同,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 縮減的維度
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4, 2)
>>> a
0.1598 -0.6884
-0.1831 -0.4412
-0.9925 -0.6244
-0.2416 -0.8080
[torch.FloatTensor of size 4x2]
>>> torch.prod(a, 1)
-0.1100
0.0808
0.6197
0.1952
[torch.FloatTensor of size 4x1]
torch.std
torch.std(input) → float
返回輸入張量input
所有元素的標(biāo)準(zhǔn)差劫笙。
參數(shù):- input (Tensor) – 輸入張量
例子:
>>> a = torch.randn(1, 3)
>>> a
-1.3063 1.4182 -0.3061
[torch.FloatTensor of size 1x3]
>>> torch.std(a)
1.3782334731508061
torch.std(input, dim, out=None) → Tensor
返回輸入張量給定維度上每行的標(biāo)準(zhǔn)差芙扎。 輸出形狀與輸入相同,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 縮減的維度
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4, 4)
>>> a
0.1889 -2.4856 0.0043 1.8169
-0.7701 -0.4682 -2.2410 0.4098
0.1919 -1.1856 -1.0361 0.9085
0.0173 1.0662 0.2143 -0.5576
[torch.FloatTensor of size 4x4]
>>> torch.std(a, dim=1)
1.7756
1.1025
1.0045
0.6725
[torch.FloatTensor of size 4x1]
torch.sum
torch.sum(input) → float
返回輸入張量input
所有元素的和填大。
輸出形狀與輸入相同戒洼,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
例子:
>>> a = torch.randn(1, 3)
>>> a
0.6170 0.3546 0.0253
[torch.FloatTensor of size 1x3]
>>> torch.sum(a)
0.9969287421554327
torch.sum(input, dim, out=None) → Tensor
返回輸入張量給定維度上每行的和。 輸出形狀與輸入相同允华,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 縮減的維度
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4, 4)
>>> a
-0.4640 0.0609 0.1122 0.4784
-1.3063 1.6443 0.4714 -0.7396
-1.3561 -0.1959 1.0609 -1.9855
2.6833 0.5746 -0.5709 -0.4430
[torch.FloatTensor of size 4x4]
>>> torch.sum(a, 1)
0.1874
0.0698
-2.4767
2.2440
[torch.FloatTensor of size 4x1]
torch.var
torch.var(input) → float
返回輸入張量所有元素的方差
輸出形狀與輸入相同施逾,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
例子:
>>> a = torch.randn(1, 3)
>>> a
-1.3063 1.4182 -0.3061
[torch.FloatTensor of size 1x3]
>>> torch.var(a)
1.899527506513334
torch.var(input, dim, out=None) → Tensor
返回輸入張量給定維度上每行的方差敷矫。 輸出形狀與輸入相同,除了給定維度上為1.
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – the dimension to reduce
- out (Tensor, optional) – 結(jié)果張量 例子:
>>> a = torch.randn(4, 4)
>>> a
-1.2738 -0.3058 0.1230 -1.9615
0.8771 -0.5430 -0.9233 0.9879
1.4107 0.0317 -0.6823 0.2255
-1.3854 0.4953 -0.2160 0.2435
[torch.FloatTensor of size 4x4]
>>> torch.var(a, 1)
0.8859
0.9509
0.7548
0.6949
[torch.FloatTensor of size 4x1]
比較操作 Comparison Ops
torch.eq
torch.eq(input, other, out=None) → Tensor
比較元素相等性汉额。第二個(gè)參數(shù)可為一個(gè)數(shù)或與第一個(gè)參數(shù)同類型形狀的張量。
參數(shù):
- input (Tensor) – 待比較張量
- other (Tensor or float) – 比較張量或數(shù)
- out (Tensor, optional) – 輸出張量榨汤,須為 ByteTensor類型 or 與
input
同類型
返回值: 一個(gè) torch.ByteTensor
張量蠕搜,包含了每個(gè)位置的比較結(jié)果(相等為1,不等為0 )
返回類型: Tensor
例子:
>>> torch.eq(torch.Tensor([[1, 2], [3, 4]]), torch.Tensor([[1, 1], [4, 4]]))
1 0
0 1
[torch.ByteTensor of size 2x2]
torch.equal
torch.equal(tensor1, tensor2) → bool
如果兩個(gè)張量有相同的形狀和元素值收壕,則返回True
妓灌,否則 False
。
例子:
>>> torch.equal(torch.Tensor([1, 2]), torch.Tensor([1, 2]))
True
torch.ge
torch.ge(input, other, out=None) → Tensor
如果兩個(gè)張量有相同的形狀和元素值蜜宪,則返回True
虫埂,否則 False
。 第二個(gè)參數(shù)可以為一個(gè)數(shù)或與第一個(gè)參數(shù)相同形狀和類型的張量
參數(shù):
- input (Tensor) – 待對(duì)比的張量
- other (Tensor or float) – 對(duì)比的張量或
float
值 - out (Tensor, optional) – 輸出張量圃验。必須為
ByteTensor
或者與第一個(gè)參數(shù)tensor
相同類型掉伏。
返回值: 一個(gè) torch.ByteTensor
張量,包含了每個(gè)位置的比較結(jié)果(是否 input >= other )澳窑。 返回類型: Tensor
例子:
>>> torch.ge(torch.Tensor([[1, 2], [3, 4]]), torch.Tensor([[1, 1], [4, 4]]))
1 1
0 1
[torch.ByteTensor of size 2x2]
torch.gt
torch.gt(input, other, out=None) → Tensor
參數(shù):
- input (Tensor) – 要對(duì)比的張量
- other (Tensor or float) – 要對(duì)比的張量或
float
值 - out (Tensor, optional) – 輸出張量斧散。必須為
ByteTensor
或者與第一個(gè)參數(shù)tensor
相同類型。
返回值: 一個(gè) torch.ByteTensor
張量摊聋,包含了每個(gè)位置的比較結(jié)果(是否 input >= other )鸡捐。 返回類型: Tensor
例子:
>>> torch.gt(torch.Tensor([[1, 2], [3, 4]]), torch.Tensor([[1, 1], [4, 4]]))
0 1
0 0
[torch.ByteTensor of size 2x2]
torch.kthvalue
torch.kthvalue(input, k, dim=None, out=None) -> (Tensor, LongTensor)
取輸入張量input
指定維上第k 個(gè)最小值。如果不指定dim
麻裁,則默認(rèn)為input
的最后一維箍镜。
返回一個(gè)元組 (values,indices),其中indices
是原始輸入張量input
中沿dim
維的第 k
個(gè)最小值下標(biāo)煎源。
參數(shù):
- input (Tensor) – 要對(duì)比的張量
- k (int) – 第
k
個(gè)最小值 - dim (int, optional) – 沿著此維進(jìn)行排序
- out (tuple, optional) – 輸出元組 (Tensor, LongTensor) 可選地給定作為 輸出 buffers
例子:
>>> x = torch.arange(1, 6)
>>> x
1
2
3
4
5
[torch.FloatTensor of size 5]
>>> torch.kthvalue(x, 4)
(
4
[torch.FloatTensor of size 1]
,
3
[torch.LongTensor of size 1]
)
torch.le
torch.le(input, other, out=None) → Tensor
參數(shù):
- input (Tensor) – 要對(duì)比的張量
- other (Tensor or float ) – 對(duì)比的張量或
float
值 - out (Tensor, optional) – 輸出張量色迂。必須為
ByteTensor
或者與第一個(gè)參數(shù)tensor
相同類型。
返回值: 一個(gè) torch.ByteTensor
張量薪夕,包含了每個(gè)位置的比較結(jié)果(是否 input >= other )脚草。 返回類型: Tensor
例子:
>>> torch.le(torch.Tensor([[1, 2], [3, 4]]), torch.Tensor([[1, 1], [4, 4]]))
1 0
1 1
[torch.ByteTensor of size 2x2]
torch.lt
torch.lt(input, other, out=None) → Tensor
第二個(gè)參數(shù)可以為一個(gè)數(shù)或與第一個(gè)參數(shù)相同形狀和類型的張量
參數(shù):
- input (Tensor) – 要對(duì)比的張量
- other (Tensor or float ) – 對(duì)比的張量或
float
值 - out (Tensor, optional) – 輸出張量。必須為
ByteTensor
或者與第一個(gè)參數(shù)tensor
相同類型原献。
input: 一個(gè) torch.ByteTensor
張量馏慨,包含了每個(gè)位置的比較結(jié)果(是否 tensor >= other )。 返回類型: Tensor
例子:
>>> torch.lt(torch.Tensor([[1, 2], [3, 4]]), torch.Tensor([[1, 1], [4, 4]]))
0 0
1 0
[torch.ByteTensor of size 2x2]
torch.max
torch.max()
返回輸入張量所有元素的最大值姑隅。
參數(shù):
- input (Tensor) – 輸入張量
例子:
>>> a = torch.randn(1, 3)
>>> a
0.4729 -0.2266 -0.2085
[torch.FloatTensor of size 1x3]
>>> torch.max(a)
0.4729
torch.max(input, dim, max=None, max_indices=None) -> (Tensor, LongTensor)
返回輸入張量給定維度上每行的最大值写隶,并同時(shí)返回每個(gè)最大值的位置索引。
輸出形狀中讲仰,將dim
維設(shè)定為1慕趴,其它與輸入形狀保持一致。
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 指定的維度
- max (Tensor, optional) – 結(jié)果張量,包含給定維度上的最大值
- max_indices (LongTensor, optional) – 結(jié)果張量冕房,包含給定維度上每個(gè)最大值的位置索引
例子:
>> a = torch.randn(4, 4)
>> a
0.0692 0.3142 1.2513 -0.5428
0.9288 0.8552 -0.2073 0.6409
1.0695 -0.0101 -2.4507 -1.2230
0.7426 -0.7666 0.4862 -0.6628
torch.FloatTensor of size 4x4]
>>> torch.max(a, 1)
(
1.2513
0.9288
1.0695
0.7426
[torch.FloatTensor of size 4x1]
,
2
0
0
0
[torch.LongTensor of size 4x1]
)
torch.max(input, other, out=None) → Tensor
輸出形狀中躏啰,將dim
維設(shè)定為1,其它與輸入形狀保持一致耙册。
參數(shù):
- input (Tensor) – 輸入張量
- other (Tensor) – 輸出張量
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4)
>>> a
1.3869
0.3912
-0.8634
-0.5468
[torch.FloatTensor of size 4]
>>> b = torch.randn(4)
>>> b
1.0067
-0.8010
0.6258
0.3627
[torch.FloatTensor of size 4]
>>> torch.max(a, b)
1.3869
0.3912
0.6258
0.3627
[torch.FloatTensor of size 4]
torch.min
torch.min(input) → float
返回輸入張量所有元素的最小值给僵。
參數(shù): input (Tensor) – 輸入張量
例子:
>>> a = torch.randn(1, 3)
>>> a
0.4729 -0.2266 -0.2085
[torch.FloatTensor of size 1x3]
>>> torch.min(a)
-0.22663167119026184
torch.min(input, dim, min=None, min_indices=None) -> (Tensor, LongTensor)
返回輸入張量給定維度上每行的最小值,并同時(shí)返回每個(gè)最小值的位置索引详拙。
輸出形狀中帝际,將dim
維設(shè)定為1,其它與輸入形狀保持一致饶辙。
參數(shù):
- input (Tensor) – 輸入張量
- dim (int) – 指定的維度
- min (Tensor, optional) – 結(jié)果張量蹲诀,包含給定維度上的最小值
- min_indices (LongTensor, optional) – 結(jié)果張量,包含給定維度上每個(gè)最小值的位置索引
例子:
>> a = torch.randn(4, 4)
>> a
0.0692 0.3142 1.2513 -0.5428
0.9288 0.8552 -0.2073 0.6409
1.0695 -0.0101 -2.4507 -1.2230
0.7426 -0.7666 0.4862 -0.6628
torch.FloatTensor of size 4x4]
>> torch.min(a, 1)
0.5428
0.2073
2.4507
0.7666
torch.FloatTensor of size 4x1]
3
2
2
1
torch.LongTensor of size 4x1]
torch.min(input, other, out=None) → Tensor
兩張量形狀不需匹配弃揽,但元素?cái)?shù)須相同脯爪。
注意:當(dāng)形狀不匹配時(shí),input
的形狀作為返回張量的形狀蹋宦。
參數(shù):
- input (Tensor) – 輸入張量
- other (Tensor) – 第二個(gè)輸入張量
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4)
>>> a
1.3869
0.3912
-0.8634
-0.5468
[torch.FloatTensor of size 4]
>>> b = torch.randn(4)
>>> b
1.0067
-0.8010
0.6258
0.3627
[torch.FloatTensor of size 4]
>>> torch.min(a, b)
1.0067
-0.8010
-0.8634
-0.5468
[torch.FloatTensor of size 4]
torch.ne
torch.ne(input, other, out=None) → Tensor
參數(shù):
- input (Tensor) – 待對(duì)比的張量
- other (Tensor or float) – 對(duì)比的張量或
float
值 - out (Tensor, optional) – 輸出張量披粟。必須為
ByteTensor
或者與input
相同類型。
返回值: 一個(gè) torch.ByteTensor
張量冷冗,包含了每個(gè)位置的比較結(jié)果 (如果 tensor != other 為True
守屉,返回1
)。
返回類型: Tensor
例子:
>>> torch.ne(torch.Tensor([[1, 2], [3, 4]]), torch.Tensor([[1, 1], [4, 4]]))
0 1
1 0
[torch.ByteTensor of size 2x2]
torch.sort
torch.sort(input, dim=None, descending=False, out=None) -> (Tensor, LongTensor)
對(duì)輸入張量input
沿著指定維按升序排序蒿辙。如果不給定dim
拇泛,則默認(rèn)為輸入的最后一維。如果指定參數(shù)descending
為True
思灌,則按降序排序
返回元組 (sorted_tensor, sorted_indices) 俺叭, sorted_indices
為原始輸入中的下標(biāo)。
參數(shù):
- input (Tensor) – 要對(duì)比的張量
- dim (int, optional) – 沿著此維排序
- descending (bool, optional) – 布爾值泰偿,控制升降排序
- out (tuple, optional) – 輸出張量熄守。必須為
ByteTensor
或者與第一個(gè)參數(shù)tensor
相同類型。
例子:
>>> x = torch.randn(3, 4)
>>> sorted, indices = torch.sort(x)
>>> sorted
-1.6747 0.0610 0.1190 1.4137
-1.4782 0.7159 1.0341 1.3678
-0.3324 -0.0782 0.3518 0.4763
[torch.FloatTensor of size 3x4]
>>> indices
0 1 3 2
2 1 0 3
3 1 0 2
[torch.LongTensor of size 3x4]
>>> sorted, indices = torch.sort(x, 0)
>>> sorted
-1.6747 -0.0782 -1.4782 -0.3324
0.3518 0.0610 0.4763 0.1190
1.0341 0.7159 1.4137 1.3678
[torch.FloatTensor of size 3x4]
>>> indices
0 2 1 2
2 0 2 0
1 1 0 1
[torch.LongTensor of size 3x4]
torch.topk
torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)
沿給定dim
維度返回輸入張量input
中 k
個(gè)最大值耗跛。 如果不指定dim
裕照,則默認(rèn)為input
的最后一維。 如果為largest
為 False
调塌,則返回最小的 k
個(gè)值晋南。
返回一個(gè)元組 (values,indices),其中indices
是原始輸入張量input
中測(cè)元素下標(biāo)羔砾。 如果設(shè)定布爾值sorted
為True负间,將會(huì)確保返回的 k
個(gè)值被排序偶妖。
參數(shù):
- input (Tensor) – 輸入張量
- k (int) – “top-k”中的
k
- dim (int, optional) – 排序的維
- largest (bool, optional) – 布爾值,控制返回最大或最小值
- sorted (bool, optional) – 布爾值政溃,控制返回值是否排序
- out (tuple, optional) – 可選輸出張量 (Tensor, LongTensor) output buffers
>>> x = torch.arange(1, 6)
>>> x
1
2
3
4
5
[torch.FloatTensor of size 5]
>>> torch.topk(x, 3)
(
5
4
3
[torch.FloatTensor of size 3]
,
4
3
2
[torch.LongTensor of size 3]
)
>>> torch.topk(x, 3, 0, largest=False)
(
1
2
3
[torch.FloatTensor of size 3]
,
0
1
2
[torch.LongTensor of size 3]
)
其它操作 Other Operations
torch.cross
torch.cross(input, other, dim=-1, out=None) → Tensor
返回沿著維度dim
上趾访,兩個(gè)張量input
和other
的向量積(叉積)。 input
和other
必須有相同的形狀玩祟,且指定的dim
維上size必須為3
腹缩。
如果不指定dim
,則默認(rèn)為第一個(gè)尺度為3
的維空扎。
參數(shù):
- input (Tensor) – 輸入張量
- other (Tensor) – 第二個(gè)輸入張量
- dim (int, optional) – 沿著此維進(jìn)行叉積操作
- out (Tensor,optional) – 結(jié)果張量
例子:
>>> a = torch.randn(4, 3)
>>> a
-0.6652 -1.0116 -0.6857
0.2286 0.4446 -0.5272
0.0476 0.2321 1.9991
0.6199 1.1924 -0.9397
[torch.FloatTensor of size 4x3]
>>> b = torch.randn(4, 3)
>>> b
-0.1042 -1.1156 0.1947
0.9947 0.1149 0.4701
-1.0108 0.8319 -0.0750
0.9045 -1.3754 1.0976
[torch.FloatTensor of size 4x3]
>>> torch.cross(a, b, dim=1)
-0.9619 0.2009 0.6367
0.2696 -0.6318 -0.4160
-1.6805 -2.0171 0.2741
0.0163 -1.5304 -1.9311
[torch.FloatTensor of size 4x3]
>>> torch.cross(a, b)
-0.9619 0.2009 0.6367
0.2696 -0.6318 -0.4160
-1.6805 -2.0171 0.2741
0.0163 -1.5304 -1.9311
[torch.FloatTensor of size 4x3]
torch.diag
torch.diag(input, diagonal=0, out=None) → Tensor
- 如果輸入是一個(gè)向量(1D 張量),則返回一個(gè)以
input
為對(duì)角線元素的2D方陣 - 如果輸入是一個(gè)矩陣(2D 張量)润讥,則返回一個(gè)包含
input
對(duì)角線元素的1D張量
參數(shù)diagonal
指定對(duì)角線:
-
diagonal
= 0, 主對(duì)角線 -
diagonal
> 0, 主對(duì)角線之上 -
diagonal
< 0, 主對(duì)角線之下
參數(shù):
- input (Tensor) – 輸入張量
- diagonal (int, optional) – 指定對(duì)角線
- out (Tensor, optional) – 輸出張量
例子:
- 取得以
input
為對(duì)角線的方陣:
>>> a = torch.randn(3)
>>> a
1.0480
-2.3405
-1.1138
[torch.FloatTensor of size 3]
>>> torch.diag(a)
1.0480 0.0000 0.0000
0.0000 -2.3405 0.0000
0.0000 0.0000 -1.1138
[torch.FloatTensor of size 3x3]
>>> torch.diag(a, 1)
0.0000 1.0480 0.0000 0.0000
0.0000 0.0000 -2.3405 0.0000
0.0000 0.0000 0.0000 -1.1138
0.0000 0.0000 0.0000 0.0000
[torch.FloatTensor of size 4x4]
- 取得給定矩陣第
k
個(gè)對(duì)角線:
>>> a = torch.randn(3, 3)
>>> a
-1.5328 -1.3210 -1.5204
0.8596 0.0471 -0.2239
-0.6617 0.0146 -1.0817
[torch.FloatTensor of size 3x3]
>>> torch.diag(a, 0)
-1.5328
0.0471
-1.0817
[torch.FloatTensor of size 3]
>>> torch.diag(a, 1)
-1.3210
-0.2239
[torch.FloatTensor of size 2]
torch.histc
torch.histc(input, bins=100, min=0, max=0, out=None) → Tensor
計(jì)算輸入張量的直方圖转锈。以min
和max
為range邊界,將其均分成bins
個(gè)直條楚殿,然后將排序好的數(shù)據(jù)劃分到各個(gè)直條(bins)中撮慨。如果min
和max
都為0, 則利用數(shù)據(jù)中的最大最小值作為邊界。
參數(shù):
- input (Tensor) – 輸入張量
- bins (int) – 直方圖 bins(直條)的個(gè)數(shù)(默認(rèn)100個(gè))
- min (int) – range的下邊界(包含)
- max (int) – range的上邊界(包含)
- out (Tensor, optional) – 結(jié)果張量
返回: 直方圖 返回類型:張量
例子:
>>> torch.histc(torch.FloatTensor([1, 2, 1]), bins=4, min=0, max=3)
FloatTensor([0, 2, 1, 0])
torch.renorm
torch.renorm(input, p, dim, maxnorm, out=None) → Tensor
返回一個(gè)張量脆粥,包含規(guī)范化后的各個(gè)子張量砌溺,使得沿著dim
維劃分的各子張量的p范數(shù)小于maxnorm
。
注意 如果p范數(shù)的值小于maxnorm
变隔,則當(dāng)前子張量不需要修改规伐。
注意: 更詳細(xì)解釋參考torch7 以及Hinton et al. 2012, p. 2
參數(shù):
- input (Tensor) – 輸入張量
- p (float) – 范數(shù)的p
- dim (int) – 沿著此維切片,得到張量子集
- maxnorm (float) – 每個(gè)子張量的范數(shù)的最大值
- out (Tensor, optional) – 結(jié)果張量
例子:
>>> x = torch.ones(3, 3)
>>> x[1].fill_(2)
>>> x[2].fill_(3)
>>> x
1 1 1
2 2 2
3 3 3
[torch.FloatTensor of size 3x3]
>>> torch.renorm(x, 1, 0, 5)
1.0000 1.0000 1.0000
1.6667 1.6667 1.6667
1.6667 1.6667 1.6667
[torch.FloatTensor of size 3x3]
torch.trace
torch.trace(input) → float
返回輸入2維矩陣對(duì)角線元素的和(跡)
例子:
>>> x = torch.arange(1, 10).view(3, 3)
>>> x
1 2 3
4 5 6
7 8 9
[torch.FloatTensor of size 3x3]
>>> torch.trace(x)
15.0
torch.tril
torch.tril(input, k=0, out=None) → Tensor
返回一個(gè)張量out
,包含輸入矩陣(2D張量)的下三角部分,out
其余部分被設(shè)為0
史侣。這里所說(shuō)的下三角部分為矩陣指定對(duì)角線diagonal
之上的元素医增。
參數(shù)k
控制對(duì)角線: - k
= 0, 主對(duì)角線 - k
> 0, 主對(duì)角線之上 - k
< 0, 主對(duì)角線之下
參數(shù):
- input (Tensor) – 輸入張量
- k (int, optional) – 指定對(duì)角線
- out (Tensor, optional) – 輸出張量
例子:
>>> a = torch.randn(3,3)
>>> a
1.3225 1.7304 1.4573
-0.3052 -0.3111 -0.1809
1.2469 0.0064 -1.6250
[torch.FloatTensor of size 3x3]
>>> torch.tril(a)
1.3225 0.0000 0.0000
-0.3052 -0.3111 0.0000
1.2469 0.0064 -1.6250
[torch.FloatTensor of size 3x3]
>>> torch.tril(a, k=1)
1.3225 1.7304 0.0000
-0.3052 -0.3111 -0.1809
1.2469 0.0064 -1.6250
[torch.FloatTensor of size 3x3]
>>> torch.tril(a, k=-1)
0.0000 0.0000 0.0000
-0.3052 0.0000 0.0000
1.2469 0.0064 0.0000
[torch.FloatTensor of size 3x3]
torch.triu
torch.triu(input, k=0, out=None) → Tensor
返回一個(gè)張量,包含輸入矩陣(2D張量)的上三角部分蹦浦,其余部分被設(shè)為0
。這里所說(shuō)的上三角部分為矩陣指定對(duì)角線diagonal
之上的元素。
參數(shù)k
控制對(duì)角線: - k
= 0, 主對(duì)角線 - k
> 0, 主對(duì)角線之上 - k
< 0, 主對(duì)角線之下
參數(shù):
- input (Tensor) – 輸入張量
- k (int, optional) – 指定對(duì)角線
- out (Tensor, optional) – 輸出張量
例子:
>>> a = torch.randn(3,3)
>>> a
1.3225 1.7304 1.4573
-0.3052 -0.3111 -0.1809
1.2469 0.0064 -1.6250
[torch.FloatTensor of size 3x3]
>>> torch.triu(a)
1.3225 1.7304 1.4573
0.0000 -0.3111 -0.1809
0.0000 0.0000 -1.6250
[torch.FloatTensor of size 3x3]
>>> torch.triu(a, k=1)
0.0000 1.7304 1.4573
0.0000 0.0000 -0.1809
0.0000 0.0000 0.0000
[torch.FloatTensor of size 3x3]
>>> torch.triu(a, k=-1)
1.3225 1.7304 1.4573
-0.3052 -0.3111 -0.1809
0.0000 0.0064 -1.6250
[torch.FloatTensor of size 3x3]
BLAS and LAPACK Operations
torch.addbmm
torch.addbmm(beta=1, mat, alpha=1, batch1, batch2, out=None) → Tensor
對(duì)類型為 FloatTensor 或 DoubleTensor 的輸入吵护,alpha
and beta
必須為實(shí)數(shù),否則兩個(gè)參數(shù)須為整數(shù)表鳍。
參數(shù):
- beta (Number, optional) – 用于
mat
的乘子 - mat (Tensor) – 相加矩陣
- batch1 (Tensor) – 第一批相乘矩陣
- batch2 (Tensor) – 第二批相乘矩陣
- out (Tensor, optional) – 輸出張量
例子:
>>> M = torch.randn(3, 5)
>>> batch1 = torch.randn(10, 3, 4)
>>> batch2 = torch.randn(10, 4, 5)
>>> torch.addbmm(M, batch1, batch2)
-3.1162 11.0071 7.3102 0.1824 -7.6892
1.8265 6.0739 0.4589 -0.5641 -5.4283
-9.3387 -0.1794 -1.2318 -6.8841 -4.7239
[torch.FloatTensor of size 3x5]
torch.addmm
torch.addmm(beta=1, mat, alpha=1, mat1, mat2, out=None) → Tensor
對(duì)類型為 FloatTensor 或 DoubleTensor 的輸入馅而,beta
and alpha
必須為實(shí)數(shù),否則兩個(gè)參數(shù)須為整數(shù)进胯。
參數(shù) :
beta (Number, optional) – 用于
mat
的乘子mat (Tensor) – 相加矩陣
mat1 (Tensor) – 第一個(gè)相乘矩陣
mat2 (Tensor) – 第二個(gè)相乘矩陣
out (Tensor, optional) – 輸出張量
>>> M = torch.randn(2, 3)
>>> mat1 = torch.randn(2, 3)
>>> mat2 = torch.randn(3, 3)
>>> torch.addmm(M, mat1, mat2)
-0.4095 -1.9703 1.3561
5.7674 -4.9760 2.7378
[torch.FloatTensor of size 2x3]
torch.addmv
torch.addmv(beta=1, tensor, alpha=1, mat, vec, out=None) → Tensor
對(duì)類型為FloatTensor或DoubleTensor的輸入用爪,alpha
and beta
必須為實(shí)數(shù),否則兩個(gè)參數(shù)須為整數(shù)胁镐。
參數(shù) :
- beta (Number, optional) – 用于
mat
的乘子 - mat (Tensor) – 相加矩陣
- mat (Tensor) – 相乘矩陣
- vec (Tensor) – 相乘向量
- out (Tensor, optional) – 輸出張量
>>> M = torch.randn(2)
>>> mat = torch.randn(2, 3)
>>> vec = torch.randn(3)
>>> torch.addmv(M, mat, vec)
-2.0939
-2.2950
[torch.FloatTensor of size 2]
torch.addr
torch.addr(beta=1, mat, alpha=1, vec1, vec2, out=None) → Tensor
對(duì)類型為FloatTensor或DoubleTensor的輸入偎血,alpha
and beta
必須為實(shí)數(shù)诸衔,否則兩個(gè)參數(shù)須為整數(shù)。
參數(shù) :
- beta (Number, optional) – 用于
mat
的乘子 - mat (Tensor) – 相加矩陣
- vec1 (Tensor) – 第一個(gè)相乘向量
- vec2 (Tensor) – 第二個(gè)相乘向量
- out (Tensor, optional) – 輸出張量
>>> vec1 = torch.arange(1, 4)
>>> vec2 = torch.arange(1, 3)
>>> M = torch.zeros(3, 2)
>>> torch.addr(M, vec1, vec2)
1 2
2 4
3 6
[torch.FloatTensor of size 3x2]
torch.baddbmm
torch.baddbmm(beta=1, mat, alpha=1, batch1, batch2, out=None) → Tensor
對(duì)類型為FloatTensor或DoubleTensor的輸入颇玷,alpha
and beta
必須為實(shí)數(shù)笨农,否則兩個(gè)參數(shù)須為整數(shù)。
參數(shù):
- beta (Number, optional) – 用于
mat
的乘子 - mat (Tensor) – 相加矩陣
- batch1 (Tensor) – 第一批相乘矩陣
- batch2 (Tensor) – 第二批相乘矩陣
- out (Tensor, optional) – 輸出張量
>>> M = torch.randn(10, 3, 5)
>>> batch1 = torch.randn(10, 3, 4)
>>> batch2 = torch.randn(10, 4, 5)
>>> torch.baddbmm(M, batch1, batch2).size()
torch.Size([10, 3, 5])
torch.bmm
torch.bmm(batch1, batch2, out=None) → Tensor
對(duì)類型為 FloatTensor 或 DoubleTensor 的輸入帖渠,alpha
and beta
必須為實(shí)數(shù)谒亦,否則兩個(gè)參數(shù)須為整數(shù)。
參數(shù):
- batch1 (Tensor) – 第一批相乘矩陣
- batch2 (Tensor) – 第二批相乘矩陣
- out (Tensor, optional) – 輸出張量
>>> batch1 = torch.randn(10, 3, 4)
>>> batch2 = torch.randn(10, 4, 5)
>>> res = torch.bmm(batch1, batch2)
>>> res.size()
torch.Size([10, 3, 5])
torch.btrifact
torch.btrifact(A, info=None) → Tensor, IntTensor
返回一個(gè)元組空郊,包含LU 分解和pivots
份招。 可選參數(shù)info
決定是否對(duì)每個(gè)minibatch樣本進(jìn)行分解。info
are from dgetrf and a non-zero value indicates an error occurred. 如果用CUDA的話狞甚,這個(gè)值來(lái)自于CUBLAS锁摔,否則來(lái)自LAPACK。
參數(shù): A (Tensor) – 待分解張量
>>> A = torch.randn(2, 3, 3)
>>> A_LU = A.btrifact()
torch.btrisolve
torch.btrisolve(b, LU_data, LU_pivots) → Tensor
參數(shù):
- b (Tensor) – RHS 張量.
- LU_data (Tensor) – Pivoted LU factorization of A from btrifact.
- LU_pivots (IntTensor) – LU 分解的Pivots.
例子:
>>> A = torch.randn(2, 3, 3)
>>> b = torch.randn(2, 3)
>>> A_LU = torch.btrifact(A)
>>> x = b.btrisolve(*A_LU)
>>> torch.norm(A.bmm(x.unsqueeze(2)) - b)
6.664001874625056e-08
torch.dot
torch.dot(tensor1, tensor2) → float
計(jì)算兩個(gè)張量的點(diǎn)乘(內(nèi)乘),兩個(gè)張量都為1-D 向量.
例子:
>>> torch.dot(torch.Tensor([2, 3]), torch.Tensor([2, 1]))
7.0
torch.eig
torch.eig(a, eigenvectors=False, out=None) -> (Tensor, Tensor)
計(jì)算實(shí)方陣a
的特征值和特征向量
參數(shù):
- a (Tensor) – 方陣哼审,待計(jì)算其特征值和特征向量
- eigenvectors (bool) – 布爾值谐腰,如果
True
,則同時(shí)計(jì)算特征值和特征向量涩盾,否則只計(jì)算特征值十气。 - out (tuple, optional) – 輸出元組
返回值: 元組,包括:
- e (Tensor): a 的右特征向量
- v (Tensor): 如果
eigenvectors
為True
春霍,則為包含特征向量的張量; 否則為空張量
返回值類型: (Tensor, Tensor)
torch.gels
torch.gels(B, A, out=None) → Tensor
注意: 返回矩陣總是被轉(zhuǎn)置砸西,無(wú)論輸入矩陣的原始布局如何,總會(huì)被轉(zhuǎn)置终畅;即籍胯,總是有 stride (1, m) 而不是 (m, 1).
參數(shù):
- B (Tensor) – 矩陣B
- out (tuple, optional) – 輸出元組
返回值: 元組,包括:
- X (Tensor): 最小二乘解
- qr (Tensor): QR 分解的細(xì)節(jié)
返回值類型: (Tensor, Tensor)
例子:
>>> A = torch.Tensor([[1, 1, 1],
... [2, 3, 4],
... [3, 5, 2],
... [4, 2, 5],
... [5, 4, 3]])
>>> B = torch.Tensor([[-10, -3],
[ 12, 14],
[ 14, 12],
[ 16, 16],
[ 18, 16]])
>>> X, _ = torch.gels(B, A)
>>> X
2.0000 1.0000
1.0000 1.0000
1.0000 2.0000
[torch.FloatTensor of size 3x2]
torch.geqrf
torch.geqrf(input, out=None) -> (Tensor, Tensor)
這是一個(gè)直接調(diào)用LAPACK的底層函數(shù)离福。 一般使用torch.qr()
計(jì)算輸入的QR 分解杖狼,但是并不會(huì)分別創(chuàng)建Q,R兩個(gè)矩陣,而是直接調(diào)用LAPACK 函數(shù) Rather, this directly calls the underlying LAPACK function ?geqrf which produces a sequence of ‘elementary reflectors’.
參考 LAPACK文檔獲取更詳細(xì)信息妖爷。
參數(shù):
- input (Tensor) – 輸入矩陣
- out (tuple, optional) – 元組蝶涩,包含輸出張量 (Tensor, Tensor)
torch.ger
torch.ger(vec1, vec2, out=None) → Tensor
計(jì)算兩向量vec1
,vec2
的張量積。如果vec1
的長(zhǎng)度為n
,vec2
長(zhǎng)度為m
絮识,則輸出out
應(yīng)為形如n x m的矩陣绿聘。
參數(shù):
- vec1 (Tensor) – 1D 輸入向量
- vec2 (Tensor) – 1D 輸入向量
- out (tuple, optional) – 輸出張量
例子:
>>> v1 = torch.arange(1, 5)
>>> v2 = torch.arange(1, 4)
>>> torch.ger(v1, v2)
1 2 3
2 4 6
3 6 9
4 8 12
[torch.FloatTensor of size 4x3]
torch.gesv
torch.gesv(B, A, out=None) -> (Tensor, Tensor)
例子:
>>> A = torch.Tensor([[6.80, -2.11, 5.66, 5.97, 8.23],
... [-6.05, -3.30, 5.36, -4.44, 1.08],
... [-0.45, 2.58, -2.70, 0.27, 9.04],
... [8.32, 2.71, 4.35, -7.17, 2.14],
... [-9.67, -5.14, -7.26, 6.08, -6.87]]).t()
>>> B = torch.Tensor([[4.02, 6.19, -8.22, -7.57, -3.03],
... [-1.56, 4.00, -8.67, 1.75, 2.86],
... [9.81, -4.09, -4.57, -8.61, 8.99]]).t()
>>> X, LU = torch.gesv(B, A)
>>> torch.dist(B, torch.mm(A, X))
9.250057093890353e-06
torch.inverse
torch.inverse(input, out=None) → Tensor
對(duì)方陣輸入input
取逆。
注意 : Irrespective of the original strides, the returned matrix will be transposed, i.e. with strides (1, m) instead of (m, 1)
參數(shù) :
- input (Tensor) – 輸入2維張量
- out (Tensor, optional) – 輸出張量
例子:
>>> x = torch.rand(10, 10)
>>> x
0.7800 0.2267 0.7855 0.9479 0.5914 0.7119 0.4437 0.9131 0.1289 0.1982
0.0045 0.0425 0.2229 0.4626 0.6210 0.0207 0.6338 0.7067 0.6381 0.8196
0.8350 0.7810 0.8526 0.9364 0.7504 0.2737 0.0694 0.5899 0.8516 0.3883
0.6280 0.6016 0.5357 0.2936 0.7827 0.2772 0.0744 0.2627 0.6326 0.9153
0.7897 0.0226 0.3102 0.0198 0.9415 0.9896 0.3528 0.9397 0.2074 0.6980
0.5235 0.6119 0.6522 0.3399 0.3205 0.5555 0.8454 0.3792 0.4927 0.6086
0.1048 0.0328 0.5734 0.6318 0.9802 0.4458 0.0979 0.3320 0.3701 0.0909
0.2616 0.3485 0.4370 0.5620 0.5291 0.8295 0.7693 0.1807 0.0650 0.8497
0.1655 0.2192 0.6913 0.0093 0.0178 0.3064 0.6715 0.5101 0.2561 0.3396
0.4370 0.4695 0.8333 0.1180 0.4266 0.4161 0.0699 0.4263 0.8865 0.2578
[torch.FloatTensor of size 10x10]
>>> x = torch.rand(10, 10)
>>> y = torch.inverse(x)
>>> z = torch.mm(x, y)
>>> z
1.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000
0.0000 1.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000
0.0000 0.0000 1.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000
0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000
0.0000 0.0000 -0.0000 -0.0000 1.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000
0.0000 0.0000 0.0000 -0.0000 0.0000 1.0000 -0.0000 -0.0000 -0.0000 -0.0000
0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 1.0000 0.0000 -0.0000 0.0000
0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 1.0000 -0.0000 0.0000
-0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 1.0000 -0.0000
-0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 1.0000
[torch.FloatTensor of size 10x10]
>>> torch.max(torch.abs(z - torch.eye(10))) # Max nonzero
5.096662789583206e-07
torch.mm
torch.mm(mat1, mat2, out=None) → Tensor
參數(shù) :
- mat1 (Tensor) – 第一個(gè)相乘矩陣
- mat2 (Tensor) – 第二個(gè)相乘矩陣
- out (Tensor, optional) – 輸出張量
例子:
>>> mat1 = torch.randn(2, 3)
>>> mat2 = torch.randn(3, 3)
>>> torch.mm(mat1, mat2)
0.0519 -0.3304 1.2232
4.3910 -5.1498 2.7571
[torch.FloatTensor of size 2x3]
torch.mv
torch.mv(mat, vec, out=None) → Tensor
參數(shù) :
- mat (Tensor) – 相乘矩陣
- vec (Tensor) – 相乘向量
- out (Tensor, optional) – 輸出張量
例子:
>>> mat = torch.randn(2, 3)
>>> vec = torch.randn(3)
>>> torch.mv(mat, vec)
-2.0939
-2.2950
[torch.FloatTensor of size 2]
torch.orgqr
torch.orgqr()
torch.ormqr
torch.ormqr()
torch.potrf
torch.potrf()
torch.potri
torch.potri()
torch.potrs
torch.potrs()
torch.pstrf
torch.pstrf()
torch.qr
torch.qr(input, out=None) -> (Tensor, Tensor)
本函數(shù)返回一個(gè)thin(reduced)QR分解次舌。
注意 如果輸入很大熄攘,可能可能會(huì)丟失精度。
注意 本函數(shù)依賴于你的LAPACK實(shí)現(xiàn)彼念,雖然總能返回一個(gè)合法的分解挪圾,但不同平臺(tái)可能得到不同的結(jié)果浅萧。
Irrespective of the original strides, the returned matrix q will be transposed, i.e. with strides (1, m) instead of (m, 1).
參數(shù):
- input (Tensor) – 輸入的2維張量
- out (tuple, optional) – 輸出元組
tuple
,包含Q和R
例子:
>>> a = torch.Tensor([[12, -51, 4], [6, 167, -68], [-4, 24, -41]])
>>> q, r = torch.qr(a)
>>> q
-0.8571 0.3943 0.3314
-0.4286 -0.9029 -0.0343
0.2857 -0.1714 0.9429
[torch.FloatTensor of size 3x3]
>>> r
-14.0000 -21.0000 14.0000
0.0000 -175.0000 70.0000
0.0000 0.0000 -35.0000
[torch.FloatTensor of size 3x3]
>>> torch.mm(q, r).round()
12 -51 4
6 167 -68
-4 24 -41
[torch.FloatTensor of size 3x3]
>>> torch.mm(q.t(), q).round()
1 -0 0
-0 1 0
0 0 1
[torch.FloatTensor of size 3x3]
torch.svd
torch.svd(input, some=True, out=None) -> (Tensor, Tensor, Tensor)
some
代表了需要計(jì)算的奇異值數(shù)目哲思。如果 some=True
, it computes some and some=False computes all.
Irrespective of the original strides, the returned matrix U will be transposed, i.e. with strides (1, n) instead of (n, 1).
參數(shù):
- input (Tensor) – 輸入的2維張量
- some (bool, optional) – 布爾值洼畅,控制需計(jì)算的奇異值數(shù)目
- out (tuple, optional) – 結(jié)果
tuple
例子:
>>> a = torch.Tensor([[8.79, 6.11, -9.15, 9.57, -3.49, 9.84],
... [9.93, 6.91, -7.93, 1.64, 4.02, 0.15],
... [9.83, 5.04, 4.86, 8.83, 9.80, -8.99],
... [5.45, -0.27, 4.85, 0.74, 10.00, -6.02],
... [3.16, 7.98, 3.01, 5.80, 4.27, -5.31]]).t()
>>> a
8.7900 9.9300 9.8300 5.4500 3.1600
6.1100 6.9100 5.0400 -0.2700 7.9800
-9.1500 -7.9300 4.8600 4.8500 3.0100
9.5700 1.6400 8.8300 0.7400 5.8000
-3.4900 4.0200 9.8000 10.0000 4.2700
9.8400 0.1500 -8.9900 -6.0200 -5.3100
[torch.FloatTensor of size 6x5]
>>> u, s, v = torch.svd(a)
>>> u
-0.5911 0.2632 0.3554 0.3143 0.2299
-0.3976 0.2438 -0.2224 -0.7535 -0.3636
-0.0335 -0.6003 -0.4508 0.2334 -0.3055
-0.4297 0.2362 -0.6859 0.3319 0.1649
-0.4697 -0.3509 0.3874 0.1587 -0.5183
0.2934 0.5763 -0.0209 0.3791 -0.6526
[torch.FloatTensor of size 6x5]
>>> s
27.4687
22.6432
8.5584
5.9857
2.0149
[torch.FloatTensor of size 5]
>>> v
-0.2514 0.8148 -0.2606 0.3967 -0.2180
-0.3968 0.3587 0.7008 -0.4507 0.1402
-0.6922 -0.2489 -0.2208 0.2513 0.5891
-0.3662 -0.3686 0.3859 0.4342 -0.6265
-0.4076 -0.0980 -0.4932 -0.6227 -0.4396
[torch.FloatTensor of size 5x5]
>>> torch.dist(a, torch.mm(torch.mm(u, torch.diag(s)), v.t()))
8.934150226306685e-06
torch.symeig
torch.symeig(input, eigenvectors=False, upper=True, out=None) -> (Tensor, Tensor)
注意: 不管原來(lái)Irrespective of the original strides, the returned matrix V will be transposed, i.e. with strides (1, m) instead of (m, 1)
參數(shù):
- input (Tensor) – 輸入對(duì)稱矩陣
- eigenvectors (boolean, optional) – 布爾值(可選),控制是否計(jì)算特征向量
- upper (boolean, optional) – 布爾值(可選)棚赔,控制是否考慮上三角或下三角區(qū)域
- out (tuple, optional) – 輸出元組(Tensor, Tensor)
例子:
>>> a = torch.Tensor([[ 1.96, 0.00, 0.00, 0.00, 0.00],
... [-6.49, 3.80, 0.00, 0.00, 0.00],
... [-0.47, -6.39, 4.17, 0.00, 0.00],
... [-7.20, 1.50, -1.51, 5.70, 0.00],
... [-0.65, -6.34, 2.67, 1.80, -7.10]]).t()
>>> e, v = torch.symeig(a, eigenvectors=True)
>>> e
-11.0656
-6.2287
0.8640
8.8655
16.0948
[torch.FloatTensor of size 5]
>>> v
-0.2981 -0.6075 0.4026 -0.3745 0.4896
-0.5078 -0.2880 -0.4066 -0.3572 -0.6053
-0.0816 -0.3843 -0.6600 0.5008 0.3991
-0.0036 -0.4467 0.4553 0.6204 -0.4564
-0.8041 0.4480 0.1725 0.3108 0.1622
[torch.FloatTensor of size 5x5]
torch.trtrs
torch.trtrs()