后文主要是對pytorch官網(wǎng)的文檔的總結(jié)筋帖。
代碼來自pytorch中文API
torch.squeeze(input, dim=None, out=None)
將輸入張量形狀中的1 去除并返回扇谣。 如果輸入是形如(A×1×B×1×C×1×D)
帖池,那么輸出形狀就為: (A×B×C×D)
踊赠。
當(dāng)給定dim
時剂买,那么擠壓操作只在給定維度上玫荣。例如老玛,輸入形狀為: (A×1×B)
,squeeze(input, 0)
將會保持張量不變蜕青,只有用squeeze(input, 1)
翠桦,形狀會變成(A×B)
横蜒。
注意:返回張量與輸入張量共享內(nèi)存,所以改變其中一個的內(nèi)容會改變另一個销凑。
>>> x = torch.zeros(2,1,2,1,2)
>>> x.size()
(2L, 1L, 2L, 1L, 2L)
>>> y = torch.squeeze(x)
>>> y.size()
(2L, 2L, 2L)
>>> y = torch.squeeze(x, 0)
>>> y.size()
(2L, 1L, 2L, 1L, 2L)
>>> y = torch.squeeze(x, 1)
>>> y.size()
(2L, 2L, 1L, 2L)
torch.t(input, out=None) → Tensor
輸入一個矩陣(2維張量)丛晌,并轉(zhuǎn)置0, 1維。 可以被視為函數(shù)transpose(input, 0, 1)的簡寫函數(shù)斗幼。
>>> x = torch.randn(2, 3)
>>> x
0.4834 0.6907 1.3417
-0.1300 0.5295 0.2321
[torch.FloatTensor of size 2x3]
>>> torch.t(x)
0.4834 -0.1300
0.6907 0.5295
1.3417 0.2321
[torch.FloatTensor of size 3x2]
torch.unsqueeze(input, dim, out=None)
返回一個新的張量澎蛛,對輸入的制定位置插入維度 1。
如果dim為負(fù)蜕窿,則將會被轉(zhuǎn)化dim+input.dim()+1谋逻。
>>> x = torch.Tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
1 2 3 4
[torch.FloatTensor of size 1x4]
>>> torch.unsqueeze(x, 1)
1
2
3
4
[torch.FloatTensor of size 4x1]
torch.ones(*sizes, out=None) → Tensor
返回一個全為1 的張量,形狀由可變參數(shù)sizes定義桐经。
torch.rand(*sizes, out=None) → Tensor
返回一個張量毁兆,包含了從區(qū)間[0,1)的均勻分布中抽取的一組隨機數(shù),形狀由可變參數(shù)sizes 定義
torch.randn(*sizes, out=None) → Tensor
返回一個張量阴挣,包含了從標(biāo)準(zhǔn)正態(tài)分布(均值為0气堕,方差為 1,即高斯白噪聲)中抽取一組隨機數(shù)畔咧,形狀由可變參數(shù)sizes定義茎芭。
torch.zeros(*sizes, out=None) → Tensor
返回一個全為標(biāo)量 0 的張量,形狀由可變參數(shù)sizes 定義誓沸。
torch.cat(inputs, dimension=0) → Tensor
在給定維度上對輸入的張量序列seq 進(jìn)行連接操作梅桩。
torch.cat()可以看做 torch.split() 和 torch.chunk()的反操作。
>>> x = torch.randn(2, 3)
>>> x
0.5983 -0.0341 2.4918
1.5981 -0.5265 -0.8735
[torch.FloatTensor of size 2x3]
>>> torch.cat((x, x, x), 0)
0.5983 -0.0341 2.4918
1.5981 -0.5265 -0.8735
0.5983 -0.0341 2.4918
1.5981 -0.5265 -0.8735
0.5983 -0.0341 2.4918
1.5981 -0.5265 -0.8735
[torch.FloatTensor of size 6x3]
>>> torch.cat((x, x, x), 1)
0.5983 -0.0341 2.4918 0.5983 -0.0341 2.4918 0.5983 -0.0341 2.4918
1.5981 -0.5265 -0.8735 1.5981 -0.5265 -0.8735 1.5981 -0.5265 -0.8735
[torch.FloatTensor of size 2x9]
torch.stack(sequence, dim=0)
沿著一個新維度對輸入張量序列進(jìn)行連接拜隧。 序列中所有的張量都應(yīng)該為相同形狀摘投。
torch.normal()
返回一個張量,包含從給定參數(shù)means,std的離散正態(tài)分布中抽取隨機數(shù)虹蓄。 均值means是一個張量,包含每個輸出元素相關(guān)的正態(tài)分布的均值幸撕。 std是一個張量薇组,包含每個輸出元素相關(guān)的正態(tài)分布的標(biāo)準(zhǔn)差。 均值和標(biāo)準(zhǔn)差的形狀不須匹配坐儿,但每個張量的元素個數(shù)須相同律胀。
參數(shù):
- means (Tensor) – 均值
- std (Tensor) – 標(biāo)準(zhǔn)差
- out (Tensor) – 可選的輸出張量
torch.normal(means=torch.arange(1, 11), std=torch.arange(1, 0, -0.1))
1.5104
1.6955
2.4895
4.9185
4.9895
6.9155
7.3683
8.1836
8.7164
9.8916
[torch.FloatTensor of size 10]
torch.mean(input) → float
返回輸入張量所有元素的均值宋光。
>>> a = torch.randn(1, 3)
>>> a
-0.2946 -0.9143 2.1809
[torch.FloatTensor of size 1x3]
>>> torch.mean(a)
0.32398951053619385
torch.Tensor
char()
將tensor元素改為char類型
clone() → Tensor
返回與原tensor有相同大小和數(shù)據(jù)類型的tensor
contiguous() → Tensor
返回一個內(nèi)存連續(xù)的有相同數(shù)據(jù)的tensor,如果原tensor內(nèi)存連續(xù)則返回原tensor
dim() → int
返回tensor的維數(shù)
expand(*sizes)
返回tensor的一個新視圖炭菌,單個維度擴大為更大的尺寸罪佳。 tensor也可以擴大為更高維,新增加的維度將附在前面黑低。 擴大tensor不需要分配新內(nèi)存赘艳,只是僅僅新建一個tensor的視圖,其中通過將stride設(shè)為0克握,一維將會擴展位更高維蕾管。任何一個一維的在不分配新內(nèi)存情況下可擴展為任意的數(shù)值。
sizes(torch.Size or int...)-需要擴展的大小
>>> x = torch.Tensor([[1], [2], [3]])
>>> x.size()
torch.Size([3, 1])
>>> x.expand(3, 4)
1 1
1 1
2 2 2 2
3 3 3 3
[torch.FloatTensor of size 3x4]
numpy() → ndarray
將該tensor以NumPy的形式返回ndarray菩暗,兩者共享相同的底層內(nèi)存掰曾。原tensor改變后會相應(yīng)的在ndarray有反映,反之也一樣停团。
repeat(*sizes)
沿著指定的維度重復(fù)tensor旷坦。 不同于expand(),本函數(shù)復(fù)制的是tensor中的數(shù)據(jù)佑稠。
*sizes (torch.Size ot int...)-沿著每一維重復(fù)的次數(shù)秒梅。
>>> x = torch.Tensor([1, 2, 3])
>>> x.repeat(4, 2)
1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
[torch.FloatTensor of size 4x6]
>>> x.repeat(4, 2, 1).size()
torch.Size([4, 2, 3])
view(*args) → Tensor
返回一個有相同數(shù)據(jù)但大小不同的tensor。 返回的tensor必須有與原tensor相同的數(shù)據(jù)和相同數(shù)目的元素讶坯,但可以有不同的大小番电。一個tensor必須是連續(xù)的contiguous()才能被查看。
>>> x = torch.randn(4, 4)
>>> x.size()
torch.Size([4, 4])
>>> y = x.view(16)
>>> y.size()
torch.Size([16])
>>> z = x.view(-1, 8) # the size -1 is inferred from other dimensions
>>> z.size()
torch.Size([2, 8])
view_as(tensor)
返回被視作與給定的tensor相同大小的原tensor辆琅。 等效于:
self.view(tensor.size())