在使用Tensor時,我們首先要掌握如何使用Tensor來定義不同數據類型的變量。Tensor時張量的英文,表示多維矩陣,和numpy對應,PyTorch中的Tensor可以和numpy的ndarray相互轉換,唯一不同的是PyTorch可以在GPU上運行,而numpy的ndarray只能在cpu上運行。
常用的不同數據類型的Tensor,有32位的浮點型torch.FloatTensor, 64位浮點型 torch.DoubleTensor, 16位整形torch.ShortTensor, 32位整形torch.IntTensor和64位整形torch.LongTensor
一:Tensor的數據類型
1 torch.FloatTensor:用於生成數據類型為浮點型的Tensor,傳遞給torch.FloatTensor的參數可以是一個列表,也可以是一個維度值
2:torch.IntTensor:用於生成數據類型為整形的Tensor,傳遞給torch.IntTensor的參數可以是一個列表,也可以是一個維度值
3:torch.rand:用於生成數據類型為浮點型且維度指定的隨機Tensor,和在NumPy中使用的numpy.rand生成隨機數的方法類似,隨機生成的浮點數據在0-1區間均勻分布
4:torch.randn:用於生成數據類型為浮點型且維度指定的隨機Tensor,和在NumPy中使用numpy.randn生成隨機數的方法類似,隨機生成的浮點數的取值滿足均值為0,方差為1的正態分布
5:torch.range:用於生成數據類型為浮點型且自定義起始范圍和結束范圍的Tensor,所以傳遞給torch.range的參數有三個,分別是范圍的起始值,范圍的結束值和步長,其中,步長用於指定從起始值到結束值得每步得數據間隔
二:Tensor的運算
通過對Tensor數據類型的變量進行運算,來組合一些簡單或者復雜的算法,常用的Tensor運算如下。
1.torch.abs:將參數傳遞到torch.abs后返回輸入參數的絕對值作為輸出,輸入參數必須是一個Tensor數據類型的變量。
2.torch.add:將參數傳遞到torch.add后返回輸入參數的求和結果作為輸出,輸入參數可以全部是Tensor數據類型的變量,也可以一個是Tensor數據類型的變量,另一個是標量。
3.torch.clamp:對輸入參數按照自定義的范圍進行裁剪,最后將參數裁剪的結果作為輸出。所以輸入參數一共有三個,分別是需要進行裁剪的一共三個,分別是需要進行裁剪的Tensor數據類型的變量,裁剪的上邊界,下邊界。過程是,讓變量的每個元素分別和上下邊界比較,如果小於下邊界,該元素就被重寫下邊界的值,如果大於上邊界,該元素就被重寫上邊界的值。
4.torch.div:將參數傳遞到torch.div后返回輸入參數的求商結果作為輸出,同樣,參與運算的參數可以全部是Tensor數據類型的變量,也可以是Tensor數據類型的變量和標量的組合
5.torch.mul:將參數傳遞到torch.mul后返回輸入參數求積的結果作為輸出,參與運算的參數可以全部是Tensor數據類型的變量,
也可以是Tensor數據類型的變量和標量的組合
6.torch.pow:將參數傳遞到torch.pow后返回輸入參數的求冪結果作為輸出,參與運算的參數可以全部是Tensor數據類型的變量,
也可以是Tensor數據類型的變量和標量的組合
就是a的b次方
7.torch.mm:將參數傳遞到torch.mm后返回輸入參數的求積結果作為輸出,不過這個求積結果的方式和之前的torch.mul運算方式不一樣,toch.mm運用矩陣之間的乘法法則進行計算,所以被傳入的參數會被當作矩陣進行處理,參數的維度自然也要滿足矩陣乘法的前提條件,即前一個矩陣的行數必須和后一個矩陣的列數相等,否則不能計算。
8.torch.mv:將參數傳遞到torch.mv后返回輸入參數的求積結果作為輸出,torch.mv運用矩陣與向量之間的乘法規則進行計算,被傳入的第一個參數代表矩陣,第二個參數代表向量,順序不能顛倒