人工智能學習Pytorch教程Tensor基本操作示例詳解

一、tensor的創建

1.使用tensor

小寫字母的tensor接收具體的數據,可以直接按照numpy的方式輸入數組。

2.使用Tensor

大寫字母的可以接收形狀,此時會生成隨機數,但沒有任何規則。可以生成不同的類型。

自動生成的數據有默認類型,FloatTensor,可以使用torch.set_default_tensor_type去修改

3.隨機初始化

rand:0-1之間均勻采樣

randn:均值0,方差1的正態分佈隨機采樣

以上兩種可以直接輸入形狀,即可產生對應形狀的隨機數。

randint:參數是—起始值、終止值、形狀

同時每一個都會有一個_like方法,輸入一個tensor,會生成對應形狀的新tensor

4.其他數據生成

①torch.full

參數是—形狀,數據。如果形狀的位置給一個空的list,生成的就是標量。

②torch.arange

參數是—起始,終止,步長。不包含終止值。

③linspace和logspace

參數是—起始,終止,數量。包含終止值

④ones, zeros, eye

輸入形狀即可。ones和zeros也有_like方法

⑤torch.randperm

隨機打散。輸入一個數字,會自動生成這個數字長度的,從0開始的隨機排列數字,可以作為索引。當需要對不同的數據,使用相同的索引,並且打亂順序時,非常好用。

二、tensor的索引與切片

1.索引與切片使用方法

和python中的索引切片使用方法一致

①index_select

輸入的參數—維度的位置、要選的內容對應的維度的索引。不太好理解,可以看下面的例子。

②…

三個點相當於集成瞭的連續的冒號。

③mask

需要先根據數據生成一個mask,比如挑選出大於等於0.3的數,此時會得到一個和數據相同形狀的,滿足條件位置是1,不滿足條件的位置是0的一個mask,通過masked_select可以選出數據。

三、tensor維度的變換

1.維度變換

①torch.view

和numpy中的reshape方法一樣。轉換的時候需要考慮到實際的物理意義。

②squeeze/unsqueeze

squeeze輸入的參數—需要減少的維度所在位置

unsqueeze輸入的參數—需要增加的維度所在的位置

③expand,repeat

expand輸入的參數—希望擴展後所形成的維度

repeat輸入的參數—各自維度需要重復的次數

通常使用expand,因為不會主動復制數據。

④t,transpose,permute

t:和numpy中的轉置一樣,隻針對二維矩陣操作

transpose:輸入需要交換的維度的位置即可。但想要還原的時候,需記得轉換後的各個位置的物理意義,根據實際意義進行再次轉換。見下面的例子。

permute:輸入希望轉換成的維度的位置索引即可。相當於多次使用transpose

以上就是人工智能學習Pytorch教程Tensor基本操作示例詳解的詳細內容,更多關於Pytorch的tensor基本操作的資料請關註WalkonNet其它相關文章!

推薦閱讀: