pytorch基礎七(矩陣運算)
後文主要是對pytorch官網的文件的總結。
程式碼來自pytorch中文API
torch.squeeze(input, dim=None, out=None)
將輸入張量形狀中的1 去除並返回。 如果輸入是形如(A×1×B×1×C×1×D)
,那麼輸出形狀就為: (A×B×C×D)
。
當給定dim
時,那麼擠壓操作只在給定維度上。例如,輸入形狀為: (A×1×B)
,squeeze(input, 0)
將會保持張量不變,只有用squeeze(input, 1)
,形狀會變成(A×B)
。
注意:返回張量與輸入張量共享記憶體,所以改變其中一個的內容會改變另一個。
>>> 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維張量),並轉置0, 1維。 可以被視為函式transpose(input, 0, 1)的簡寫函式。
>>> 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為負,則將會被轉化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 的張量,形狀由可變引數sizes定義。
torch.rand(*sizes, out=None) → Tensor
返回一個張量,包含了從區間[0,1)的均勻分佈中抽取的一組隨機數,形狀由可變引數sizes 定義
torch.randn(*sizes, out=None) → Tensor
返回一個張量,包含了從標準正態分佈(均值為0,方差為 1,即高斯白噪聲)中抽取一組隨機數,形狀由可變引數sizes定義。
torch.zeros(*sizes, out=None) → Tensor
返回一個全為標量 0 的張量,形狀由可變引數sizes 定義。
torch.cat(inputs, dimension=0) → Tensor
在給定維度上對輸入的張量序列seq 進行連線操作。
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)
沿著一個新維度對輸入張量序列進行連線。 序列中所有的張量都應該為相同形狀。
torch.normal()
返回一個張量,包含從給定引數means,std的離散正態分佈中抽取隨機數。 均值means是一個張量,包含每個輸出元素相關的正態分佈的均值。 std是一個張量,包含每個輸出元素相關的正態分佈的標準差。 均值和標準差的形狀不須匹配,但每個張量的元素個數須相同。
引數:
- means (Tensor) – 均值
- std (Tensor) – 標準差
- 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有相同大小和資料型別的tensor
contiguous() → Tensor
返回一個記憶體連續的有相同資料的tensor,如果原tensor記憶體連續則返回原tensor
dim() → int
返回tensor的維數
expand(*sizes)
返回tensor的一個新檢視,單個維度擴大為更大的尺寸。 tensor也可以擴大為更高維,新增加的維度將附在前面。 擴大tensor不需要分配新記憶體,只是僅僅新建一個tensor的檢視,其中通過將stride設為0,一維將會擴充套件位更高維。任何一個一維的在不分配新記憶體情況下可擴充套件為任意的數值。
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,兩者共享相同的底層記憶體。原tensor改變後會相應的在ndarray有反映,反之也一樣。
repeat(*sizes)
沿著指定的維度重複tensor。 不同於expand(),本函式複製的是tensor中的資料。
*sizes (torch.Size ot int...)-沿著每一維重複的次數。
>>> 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
返回一個有相同資料但大小不同的tensor。 返回的tensor必須有與原tensor相同的資料和相同數目的元素,但可以有不同的大小。一個tensor必須是連續的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())
相關文章
- 3D數學基礎-向量運算基礎和矩陣變換3D矩陣
- OpenCV矩陣運算OpenCV矩陣
- Julia的矩陣運算矩陣
- NumPy 基礎 (二) - 陣列運算陣列
- Numpy中的矩陣運算矩陣
- 【scipy 基礎】--稀疏矩陣矩陣
- 基礎入門:深度學習矩陣運算的概念和程式碼實現深度學習矩陣
- 矩陣乘法的運算量計算(華為OJ)矩陣
- MATLAB(6)矩陣和向量運算Matlab矩陣
- 矩陣運算與相抵標準型矩陣
- R語言矩陣基礎操作R語言矩陣
- 矩陣計算矩陣
- verilog實現矩陣卷積運算矩陣卷積
- 人工智慧數學基礎—-矩陣人工智慧矩陣
- 人工智慧數學基礎----矩陣人工智慧矩陣
- Spark MLlib 核心基礎:向量 And 矩陣Spark矩陣
- [shell基礎]——算術運算
- VIVADO vhdl verilog 實現矩陣運算矩陣
- Eigen教程(3)之矩陣和向量的運算矩陣
- 向量化實現矩陣運算最佳化(一)矩陣
- MKL稀疏矩陣運算示例及函式封裝矩陣函式封裝
- Matlab矩陣運算的硬體資源分析Matlab矩陣
- C++ 練氣期之二維陣列與矩陣運算C++陣列矩陣
- 計算機基礎:位運算計算機
- c語言中實現4行3列矩陣和3行4列矩陣的運算C語言矩陣
- 矩陣:如何使用矩陣操作進行 PageRank 計算?矩陣
- 第四篇:使用 CUBLAS 庫給矩陣運算提速矩陣
- [WebGL入門]五,矩陣的基礎知識Web矩陣
- JS基礎入門篇(七)—運算子JS
- 計算矩陣的秩矩陣
- 3.2 Tensorflow基礎運算
- Python基礎運算分享Python
- 高效能運算&CUDA | 使用numba對三維矩陣在gpu上進行運算矩陣GPU
- 頭條號矩陣運營工具,運營矩陣進行多賬號管理矩陣
- 「技美之路 第04篇」圖形 1.2.3 MVP矩陣運算MVP矩陣
- 什麼是新媒體矩陣運營?運營矩陣其實很簡單矩陣
- Java 基礎 之 算數運算子Java
- JAVA基礎提高之位運算Java