pytorch入門與實踐-3 Tensor詳解

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操做相反

相關文章
相關標籤/搜索