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

相关文章
相关标签/搜索