1--如第二章所講,Tensor的本質是矩陣或數據數組
2--對Tensor的操做分類函數
|----API分類spa
|------torch中定義的: t.f(a,b)orm
|------tensor的成員函數: a.f(b)對象
|----按對tensro的做用分索引
|------不會改變自己 : 返回第三變了內存
|------會改變自己 : 修改自身的, 同名方法+ 下劃線 都表示這個方法是修改自身的element
3--Tensor的建立form
|----t.Tensor(a,b): 建立一個a×b的tensor,值爲隨機,t.Tensor((a,b)):以list(a,b)建立一個tensor,二者不同select
|----t.ones(),t.zeros():建立全1,全0對象
|----t.eye(),建立單位矩陣(對角線爲1的矩陣)|爲何只有一個方向的對角線?由於子矩陣中上下順序能夠變換
|----t.arange(a,b,s) 建立1維數據,從a到b,s爲步進值
|----t.linspace(a,b,s) 建立1維數據,從a到b分紅s分,可是s不能是1,至少是2
|----t.rand(),t.randn(), 前者隨即分佈,後者正態隨即分佈
|----t.normal(m,s),t.uniform(f,to),正太分佈,均勻分佈 ? 不知道有什麼區別 ??
|----t.randperm(m)隨機排列, 即 1-m隨機排列產生一個一維數組
4--Tensor屬性訪問
|----查看Tensor的大小(維度 ) a.size(),a.shape(),二者等價
|----查看總元素個數 a.numel() == a.nelement()
5--Tensor數據層面上的修改
|----a.view(a,b),會修改其維度,可是數據總量不會改變 且返回新的對象b,但a與b共享內存,只是對內存的解析不一樣
|------當view的參數含有-1時,該參數會根據另外一個參數計算當前的參數
|----a.squeeze(dim) 縮減某個維度,可是隻有能縮減的時候纔會生效,實驗的時候發現只有通過unsqueeze出的維度才能縮減
|----a.resize_(), 當縮小時,不見的內存依舊保存,當變大時,會自動擴增內存
6--Tensor的索引
|----下標運算[ ],很騷氣,腳本語言的好處了吧
|----方法類: 注意 要分清 dim 和 index的區別
|------t.index_select()
|------t.masked_select(),就是掩圖,可是是ByteTensor
|------t.non_zero()
|------gather() 在某維度的方向上 進行選取,略複雜
|------scatter_() 與 gather操做相反