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()