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