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