張量(Tensor)幾何代數(shù)中定義的張量是基于向量和矩陣的推廣,通俗一點(diǎn)來(lái)理解,我們可以將標(biāo)量視為零階張量,矢量視為一階張量,那么矩陣就是二階張量。 張量 在PyTorch中,張量Tensor是最基礎(chǔ)的運(yùn)算單位,與NumPy中的NDArray類似,張量表示的是一個(gè)多維矩陣。不同的是,PyTorch中的Tensor可以運(yùn)行在GPU上,而NumPy的NDArray只能運(yùn)行在CPU上。由于Tensor能在GPU上運(yùn)行,因此大大加快了運(yùn)算速度。 可以通過rand( )函數(shù)生成一個(gè)簡(jiǎn)單的張量,例如生成一個(gè)2行3列0-1的隨機(jī)數(shù)Tensor。 torch.rand(2, 3) 通過shape屬性或使用size( )函數(shù)可以查看Tensor的大小。 查看Tensor大小 在同構(gòu)的意義下,我們?cè)O(shè)r為張量的秩或階,那么,第零階張量(r = 0)為標(biāo)量,第一階張量(r = 1)為向量,第二階張量(r = 2)為矩陣,第三階以上(r > 2)的統(tǒng)稱為多維張量。 Tensor基本數(shù)據(jù)類型Tensor的常用基本數(shù)據(jù)類型主要有以下五種:
此外,Tensor的數(shù)據(jù)類型還可以是byte或chart型。 Tensor基本數(shù)據(jù)類型 Tensor初始化除了使用rand( )函數(shù)外,PyTorch中還提供了許多初始化張量的方法,可以類比NumPy中對(duì)NDArray的初始化。 randn( ):初始化一個(gè)均值為0,方差為1的隨機(jī)數(shù)Tensor。 ones( ):初始化一個(gè)全為1的Tensor。 zeros( ):初始化一個(gè)全為0的Tensor。 eye( ):初始化一個(gè)主對(duì)角線為1,其余都為0的Tensor(只能是二階,即矩陣)。 Tensor初始化 Tensor常用APIPyTorch對(duì)Tensor的操作與NumPy對(duì)NDArray的操作非常相似,因此在學(xué)習(xí)Tensor時(shí)可以經(jīng)常對(duì)比NDArray。事實(shí)上,它們兩者基本就是一致的。 max( )/min( ):沿行或列取最大值/最小值。參數(shù)dim=0表示沿列,dim=1表示沿行。返回value(值)和idx(索引)。 max()/min() sum( ):沿行/列求和。 sum() 基本四則運(yùn)算。 基本四則運(yùn)算 add( )與add_( ):以_為結(jié)尾的會(huì)改變調(diào)用值本身。 add( )與add_( ) mm( ):矩陣乘法。 mm( ) PyTorch的Tensor與NumPy的NDArray轉(zhuǎn)換使用PyTorch的numpy( )函數(shù)將Tensor轉(zhuǎn)換為NDArray。 Tensor轉(zhuǎn)NDArray 使用PyTorch的from_numpy( )函數(shù)將NDArray轉(zhuǎn)換為Tensor。 NDArray轉(zhuǎn)Tensor Tensor運(yùn)行設(shè)備(GPU與CPU)轉(zhuǎn)換一般情況下可以使用cuda( )函數(shù)將Tensor轉(zhuǎn)移到GPU上運(yùn)行,當(dāng)然這步操作需要cuda設(shè)備的支持。 將Tensor轉(zhuǎn)移到GPU上運(yùn)行 |
|
來(lái)自: taotao_2016 > 《AI》