pytorch tensor api

def TestTensor():python

x1 = torch.empty(5,3)#構建一個5*3張量或矩陣;注意這裏是(5,3),而不是[5,3];其並未進行初始化;數組

x2 = torch.empty(5,3)#構建一個隨機初始化的矩陣;dom

x3 = torch.zeros(5,3,dtype=torch.long)#構建矩陣使用0進行填充,並指定了填充類型;函數

x = torch.tensor([2,3])#直接從python列表構建矩陣;測試

x = x.new_ones(5,3,dtype=torch.double)#注意這裏是x.new_ones,不是torch.new_ones;類型爲double而且依據值爲1張量的屬性進行建立新的張量,注意建立依據是現有張量;spa

x = torch.randn_like(x,dtype=torch.float)#依據x屬性進行隨機進行建立線程

size = x.size()#獲得其大小,其實是一個元祖;orm

y = x對象

z = x+y排序

z = torch.add(x,y)#以上兩種求和方式同樣;

r = torch.empty(5,3)

z = torch.add(x,y,out=r)#將張量做爲參數;求和結果放入r中;

x = torch.linspace(1,10,10)

y = torch.linspace(-10,0,10)

x.copy_(y)#將y複製給x,注意任何帶下劃線操做都會改變x自己,好比x.t_()轉置;

x = torch.linspace(1,16,16)

y = x.view(16)#調整x爲一行

y = x.view(4,4)#size調整爲4*4

y = x.view(-1,8)#-1表示不肯定行數

y = x.view(8,-1)#-1表示不肯定列數目

x = torch.randn(1)

x = x.item()#若是隻有一個元素,則使用item獲取元素實際值;

x = torch.randn(4,4)

x = x.numpy()#將tensor轉爲numpy形式

x = x+1#numpy值廣播

x = np.ones(10)

y = torch.from_numpy(x)#將numpy轉爲torch tensor

y = np.ones(10)

np.add(x,1,y)#將numpy類型x值加1放入y,注意x和y的size必須相等;

y = torch.cuda.is_available()#判斷gpu是否可用;

device=torch.device('cuda')#獲得cuda

y = torch.zeros(5,3)

y = torch.ones_like(y,device=device)#直接在GPU設備上建立一個張量,注意第一次加載時較慢;

x = y.to(device)#同上同樣.

x = y.to('cpu',torch.double)#轉移到cpu上面,速度較快;


 

def TestTensorAttr():

x = [1,2]

print(torch.is_tensor(x))#測試x是不是一個tensor對象;

print(torch.is_storage(x))#測試x是不是一個存儲對象;

print(torch.is_floating_point(torch.Tensor(x)))#測試x是不是一個浮點類型張量,注意測試對象首先必須是一個張量

print(torch.get_default_dtype())#獲取當前默認的數據類型,通常是float,除非手動設置過;

y = torch.Tensor(x)

print(torch.numel(y))#返回y的元素個數

torch.set_default_dtype(torch.float64)#設置默認類型;

print(torch.get_default_dtype())

a = torch.tensor([[1,2],[3,4]])#建立tensor對象.注意這裏是一個列表,若是指定維度進行建立須要使用大寫Tensor函數;

a = torch.Tensor(5,3)#指定維度大小的tensor建立;

a = torch.tensor(1)#建立一個標量

a = torch.Tensor(1)#建立一個維度張量注意和上面不一樣 tensor([6.9156e-310])

a = torch.zeros(5,3)#建立一個0填充張量,注意在pytorch中大部分函數前面參數均爲size,而不是具體數據內容.

a = torch.zeros_like(a)#建立與a相同屬性的張量,注意這裏利用了a的維度以及數據類型等屬性;

a = torch.ones(5,3)

a = torch.ones_like(a)#這裏與上面徹底相同,只不過使用1進行填充;

a = torch.arange(1,10,1)#tensor([1, 2, 3, 4, 5, 6, 7, 8, 9]) 與python自帶相似,但這裏返回的是tensor對象;

a = torch.arange(6)#tensor([0, 1, 2, 3, 4, 5]) 注意此特殊用法;

a = torch.arange(1,10,0.5)#注意第三個數表示是間隔,並非具體數量;

a = torch.range(1,10,2.5)#tensor([1.0000, 3.5000, 6.0000, 8.5000]) 同上

a = torch.linspace(1,12,9)#tensor([ 1.0000, 2.3750, 3.7500, 5.1250, 6.5000, 7.8750, 9.2500, 10.6250,12.0000])

a = torch.linspace(1,5,3)#tensor([1., 3., 5.]) 這裏的3表明具體元素數量;

a = torch.logspace(0,2,3)#生成三個數,做爲10的指數,tensor([ 1., 10., 100.])

a = torch.eye(3)#生成方陣,對角線元素爲1,其餘爲0;

a = torch.empty(5,3)#空矩陣,無初始化;

a = torch.empty_like(a)

a = torch.full((2,3),3.14)#生成兩行三列矩陣,並使用3.14填充;與zero類似,只不過是能夠填充任何值;

a = torch.full_like(a,3.14)#利用上面屬性;

a = torch.randn(2,3)

"""

tensor([[ 1.1974, -0.0090, 0.8836],

[ 1.0294, -0.2927, -0.6475],

[ 1.1974, -0.0090, 0.8836],

[ 1.0294, -0.2927, -0.6475],

[ 1.1974, -0.0090, 0.8836],

[ 1.0294, -0.2927, -0.6475],

[ 1.1974, -0.0090, 0.8836],

[ 1.0294, -0.2927, -0.6475]])

"""

a = torch.cat((a,a,a,a),1)#鏈接張量序列;

a = torch.chunk(a,32)#將張量分割爲特定數量的塊.

#torch.gather(input,dim,index,out = None,sparse_grad = False ) →Tensor沿着dim指定的軸收集值。

"""

torch.index_select返回一個新的張量的指數input沿着維張量 dim使用的條目中index這是一個LongTensor。

torch.masked_select返回一個新的1-D張量,它input根據二進制掩碼索引張量,該二進制掩碼mask是ByteTensor。

torch.narrow返回一個新的張量,它是張量的縮小版本input

torch.nonzero返回一個包含全部非零元素索引的張量 input。

torch.reshape返回具備相同數據和元素數量input但具備指定形狀的張量。

torch.split將張量分裂成塊。

torch.squeeze返回已移除input大小爲1的全部維度的張量。

torch.stack沿新維度鏈接張量序列

torch.take返回具備input給定索引處元素的新張量

torch.transpose返回一個張量版本的張量input。給定的尺寸dim0和dim1交換。

torch.unbind刪除張量維度。

torch.unsqueeze返回在指定位置插入的尺寸爲1的新張量

torch.where(條件,x,y ) 返回從任一個x或中選擇的元素的張量y,取決於condition

torch.bernoulli從伯努利分佈中繪製二進制隨機數(0或1)。

torch.multinomial返回張量,其中每行包含num_samples從位於張量的相應行中的多項機率分佈中採樣的索引input

torch.normal返回從單獨的正態分佈中提取的隨機數的張量,其中給出了均值和標準差

torch.rand返回填充了間隔上均勻分佈的隨機數的張量 [0,1)[ 0 ,1 )

torch.rand_like返回一個張量,其大小與input填充了間隔上均勻分佈的隨機數的張量相同[0,1)[ 0 ,1 )

torch.randint返回填充了low(包含)和high(不包含)之間統一輩子成的隨機整數的張量

torch.randint_like返回與Tensor具備相同形狀的張量

torch.randn返回一個填充了正態分佈中隨機數的張量,其均值爲0,方差爲1(也稱爲標準正態分佈)

torch.randn_like做爲返回具備相同尺寸的張量input填充有隨機數從正態分佈均值爲0,方差爲1

torch.randperm返回從整數的隨機排列0來

torch.Tensor.bernoulli_() - 就地版 torch.bernoulli()

torch.Tensor.cauchy_() - 從Cauchy分佈中提取的數字

torch.Tensor.exponential_() - 從指數分佈中提取的數字

torch.Tensor.geometric_() - 從幾何分佈中提取的元素

torch.Tensor.log_normal_() - 來自對數正態分佈的樣本

torch.Tensor.normal_() - 就地版 torch.normal()

torch.Tensor.random_() - 從離散均勻分佈中採樣的數字

torch.Tensor.uniform_() - 從連續均勻分佈中採樣的數字

torch.quasirandom.SobolEngine用於生成(加擾)Sobol序列的引擎

torch.save將對象保存到磁盤文件

torch.load加載torch.save()從文件中保存的對象

torch.get_num_threads獲取用於並行化CPU操做的線程數

torch.set_num_threads設置用於並行化CPU操做的線程數

torch.ceil最小整數大於或等於每一個元素

torch.clamp將全部元素夾在[,]input範圍內並返回結果張量

torch.digamma計算輸入上伽馬函數的對數導數

torch.erf計算每一個元素的錯誤函數

torch.erfc計算每一個元素的互補偏差函數

torch.erfinv計算每一個元素的逆偏差函數

torch.floor小於或等於每一個元素的最大整數

torch.frac計算每一個元素的小數部分

torch.lerp兩個張量的線性插值start並end基於標量或張量weight並返回結果out

torch.reciprocal元素的倒數

torch.remainder除法的元素餘數

torch.round四捨五入到最接近的整數

torch.rsqrt平方根的倒數

torch.sigmoid

torch.sign返回帶有元素符號的新張量

torch.trunc元素的截斷整數值

torch.argmax返回input張量中全部元素的索引

torch.argmin返回input張量中全部元素的最小值的索引

torch.cumprod返回input維度 中元素的累積乘積

torch.cumsum返回input維度 中元素的累積總和

torch.dist返回(input- other)的p範數

torch.logsumexp返回input 給定維度中張量的每一行的求和指數的對數

torch.mean返回input張量中全部元素的平均值

torch.median返回input張量中全部元素的中值

torch.mode返回一個namedtuple ,其中是給定維度中張量 的每一行的模式值,即在該行中最常出現的值,而且是找到的每一個模式值的索引位置

torch.norm返回給定張量的矩陣範數或向量範數

torch.prod返回input張量中全部元素的乘積

torch.std返回input張量中全部元素的標準誤差

torch.sum返回input張量中全部元素的總和

torch.unique返回輸入張量的惟一元素

torch.unique_consecutive從每一個連續的等效元素組中消除除第一個元素以外的全部元素

torch.var返回input張量中全部元素的方差

torch.allclose此函數檢查是否所有self並other知足條件

torch.argsort按值按升序對給定維度的張量進行排序的索引

torch.eq相等

torch.equal True若是兩個張量具備相同的大小和元素,False不然

torch.ge大於等於

torch.gt大於

torch.isfinite返回一個新的張量,其布爾元素表示每一個元素是否爲有限元素

torch.isinf返回一個新的張量,其布爾元素表示每一個元素是否爲+/- INF

torch.isnan返回一個新的張量,其布爾元素表示每一個元素是否爲NaN

torch.kthvalue返回一個namedtuple ,其中是給定維度中張量 的每一行的第一個最小元素。而且是找到的每一個元素的索引位置

torch.le小於等於

torch.lt小於

torch.max返回input張量中全部元素的最大值

torch.min返回input張量中全部元素的最小值

torch.sort按值按升序對給定維度的張量元素進行排序

torch.topk返回k給input定尺寸的給定張量的最大元素

torch.fft複數到複數的離散傅立葉變換

torch.ifft複數到複數的逆離散傅立葉變換

torch.rfft實數到複數的離散傅立葉變換

torch.irfft複數到實數的逆離散傅立葉變換

torch.stft短時傅立葉變換(STFT)

torch.bartlett_window巴特利特的窗口功能

torch.blackman_window布萊克曼窗口功能

torch.hamming_window漢明窗功能

torch.hann_window漢恩窗功能

torch.bincount計算非負的int數組中每一個值的頻率

torch.broadcast_tensors根據廣播語義廣播給定的張量

torch.cartesian_prod作給定序列的張量的笛卡爾積

torch.combinations計算長度的組合 [R給定張量的 r

torch.cross叉積

torch.diag

torch.diag_embed建立一個張量,其某些2D平面的對角線(由dim1和指定 dim2)填充input。爲了便於建立批量對角矩陣,默認選擇由返回張量的最後兩個維度造成的2D平面

torch.diagflat

torch.diagonal返回的局部視圖input與相對於所述其對角元素dim1和dim2附加爲在該形狀的端部的尺寸。

torch.einsum使用愛因斯坦求和約定來計算多線性表達式(即乘積和)的方法

torch.flatten在張量中展平

torch.flip在dims中沿給定軸反轉nD張量的順序

torch.rot90在dims軸指定的平面中將nD張量旋轉90度

torch.histc計算張量的直方圖

torch.meshgrid採起 ñN個張量,每一個張量能夠是標量或1維向量,並建立ñN個 N維網格,其中一世我 個網格由擴展定義一世我 TH輸入在由其餘輸入定義尺寸。

torch.renorm返回一個張量,其中input沿維度的 每一個子張量dim被歸一化,使得子張量的p範數低於該值maxnorm

torch.repeat_interleave重複張量的元素

torch.roll 沿給定尺寸滾動張量

torch.tensordot返回多維度上a和b的收縮

torch.trace返回輸入2-D矩陣的對角線元素的總和

torch.tril返回矩陣(2-D張量)或批量矩陣的下三角部分, input結果張量的其餘元素out設置爲0

torch.tril_indices返回2-by-N Tensor 中的row-by column-matrix 的下三角部分的索引,其中第一行包含全部索引的行座標,第二行包含列座標。指數基於行和列進行排序。

torch.triu返回矩陣(2-D張量)或一批矩陣的上三角部分, input結果張量的其餘元素out設置爲0

torch.triu_indices返回的上三角部分的索引row由 column矩陣在一個2×-N張量,其中,第一行包含全部索引的行座標和第二行包含列座標。指數基於行和列進行排序。

torch.addbmm執行存儲在batch1和中的矩陣的矩陣矩陣乘積,並batch2使用減小的添加步驟(全部矩陣乘法沿第一維積累)。 mat被添加到最終結果中

torch.addmm 執行矩陣的矩陣乘法mat1和mat2。矩陣mat被添加到最終結果中

torch.addmv執行所述矩陣的矩陣矢量乘積mat和矢量vec

torch.addr執行向量的外積vec1和vec2 ,並將其添加到基質mat

torch.baddbmm在batch1 和中執行矩陣的批量矩陣 - 矩陣乘積batch2。 mat被添加到最終結果中

torch.bmm 執行存儲在batch1 和中的矩陣的批量矩陣 - 矩陣乘積batch2

torch.btrifact返回包含LU分解和樞軸的元組A。若是pivot設置,則完成透視

torch.btrifact_with_info執行LU分解並返回其餘狀態信息以及LU分解和支點

torch.btrisolve求解方程組 Ax = b一個x=b使用部分旋轉的LU分解一個一個由下式給出LU_data和LU_pivots

torch.btriunpack從張量的LU分解中解包數據和樞軸

torch.chain_matmul返回的矩陣乘積 ñN個 2-D張量

torch.cholesky計算對稱正定矩陣的Cholesky分解 一個A或批量對稱正定矩陣

torch.cholesky_inverse計算對稱正定矩陣的逆 一個一個使用它的喬萊斯基因素u:返回矩陣inv。使用LAPACK例程dpotri和spotri(以及相應的MAGMA例程)計算逆。

torch.cholesky_solve求解具備正半定矩陣的線性方程組,給定其Cholesky因子矩陣u

torch.dot計算兩個張量的點積(內積

torch.eig 計算實方陣的特徵值和特徵向量

torch.gels計算滿秩矩陣的最小二乘和最小范數問題的解 一個一個大小(m \次n)(m×n )和矩陣乙B的大小(m \次k)(m×k )

torch.geqrf調用LAPACK的低級函數

torch.ger

torch.gesv返回到由...表示的線性方程組 AX = B.一個X.=B和LU的分解

torch.inverse採用方陣的倒數input

torch.det(A )計算2D平方張量的行列式

torch.logdet計算2D平方張量的對數行列式

torch.slogdet計算2D平方張量的行列式的符號和對數值

torch.lu計算方陣或批量矩陣的LU分解 A

torch.lu_solve批量LU解決

torch.lu_unpack從張量的LU分解中解包數據和樞軸

torch.matmul兩個張量的矩陣乘積

torch.matrix_power返回爲矩形矩陣提高到冪n的矩陣

torch.matrix_rank

torch.mm執行矩陣的矩陣乘法mat1和mat2

torch.mv執行所述矩陣的矩陣矢量乘積mat和矢量 vec

torch.orgqr計算正交矩陣Q一QR分解

torch.ormqrQR分解的正交Q矩陣乘以mat

torch.pinverse計算2D張量的僞逆

torch.potrf計算對稱正定矩陣的Cholesky分解

torch.potri計算對稱正定矩陣的逆 一個A使用其Cholesky因子

torch.potrs求解具備正半定矩陣的線性方程組,給定其Cholesky因子矩陣u

torch.pstrf計算對稱正定矩陣的旋轉Cholesky分解

torch.qr計算矩陣的QR分解input,並返回矩陣的命名元組

torch.solve該函數將解決方案返回到由...表示的線性方程組 AX = B.一個X.=B和LU的分解

torch.svd svd(A)返回namedtuple 其中輸入實矩陣的奇異值分解

torch.symeig返回實對稱矩陣的特徵值和特徵向量

torch.triangular_solve求解具備三角係數矩陣的方程組 一個A

torch.trtrs 求解具備三角係數矩陣的方程組 一個A

torch.compiled_with_cxx11_abi返回是否使用_GLIBCXX_USE_CXX11_ABI = 1構建PyTorch

"""

print(a)

 

TestTensorAttr()

相關文章
相關標籤/搜索