python:機(jī)器學(xué)習(xí)模塊PyTorch【下】

上接: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ù)descendingTrue思灌,則按降序排序

返回元組 (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維度返回輸入張量inputk 個(gè)最大值耗跛。 如果不指定dim裕照,則默認(rèn)為input的最后一維。 如果為largestFalse 调塌,則返回最小的 k 個(gè)值晋南。

返回一個(gè)元組 (values,indices),其中indices是原始輸入張量input中測(cè)元素下標(biāo)羔砾。 如果設(shè)定布爾值sortedTrue负间,將會(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è)張量inputother的向量積(叉積)。 inputother 必須有相同的形狀玩祟,且指定的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ì)算輸入張量的直方圖转锈。以minmax為range邊界,將其均分成bins個(gè)直條楚殿,然后將排序好的數(shù)據(jù)劃分到各個(gè)直條(bins)中撮慨。如果minmax都為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ì)類型為 FloatTensorDoubleTensor 的輸入吵护,alphaand 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ì)類型為 FloatTensorDoubleTensor 的輸入馅而,betaand 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ì)類型為FloatTensorDoubleTensor的輸入用爪,alphaand 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ì)類型為FloatTensorDoubleTensor的輸入偎血,alphaand 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ì)類型為FloatTensorDoubleTensor的輸入颇玷,alphaand 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ì)類型為 FloatTensorDoubleTensor 的輸入帖渠,alphaand 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): 如果eigenvectorsTrue春霍,則為包含特征向量的張量; 否則為空張量

返回值類型: (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()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帝簇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子靠益,更是在濱河造成了極大的恐慌丧肴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胧后,死亡現(xiàn)場(chǎng)離奇詭異闪湾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)绩卤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)江醇,“玉大人濒憋,你說(shuō)我怎么就攤上這事√找梗” “怎么了凛驮?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)条辟。 經(jīng)常有香客問(wèn)我黔夭,道長(zhǎng),這世上最難降的妖魔是什么羽嫡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任本姥,我火速辦了婚禮,結(jié)果婚禮上杭棵,老公的妹妹穿的比我還像新娘婚惫。我一直安慰自己,他們只是感情好魂爪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布先舷。 她就那樣靜靜地躺著,像睡著了一般滓侍。 火紅的嫁衣襯著肌膚如雪蒋川。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天撩笆,我揣著相機(jī)與錄音捺球,去河邊找鬼缸浦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛懒构,可吹牛的內(nèi)容都是我干的餐济。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胆剧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼絮姆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起秩霍,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤篙悯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后铃绒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鸽照,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年颠悬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矮燎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赔癌,死狀恐怖诞外,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灾票,我是刑警寧澤峡谊,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站刊苍,受9級(jí)特大地震影響既们,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜正什,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一啥纸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧埠忘,春花似錦脾拆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至旨怠,卻和暖如春渠驼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鉴腻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工迷扇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留百揭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓蜓席,卻偏偏與公主長(zhǎng)得像器一,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厨内,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容