觉得有帮助请点赞关注收藏 有问题可评论区留言~~~
Tensor对象是一个维度任意的矩阵,但是一个Tensor中所有元素的数据类型必须一致。torch包含的数据类型和普遍编程语言的数据类型类似,包含浮点型,有符号整型和无符号整形,这些类型既可以定义在CPU上,也可以定义在GPU上。在使用Tensor数据类型时,可以通过dtype属性指定它的数据类型,device指定它的设备(CPU或者GPU)
1:基本定义
代码如下 可查看tensor的基本类型以及运行设备
import torch import numpy as np print('torch.tensor 默认为:{}'.format(torch.Tensor(1).dtype)) a=torch.tensor([[1,2],[3,4]],dtype=torch.float64) print(a) #cpu -gpu之间转换 c=torch.ones((2,2)) c=c.to('cpu',torch.double) print(c.device)
输出如下
2:矩阵乘法
对Tensor执行算术符的运算时 是两个矩阵对应元素的运算,torch.mm执行矩阵乘法的计算
代码如下
import torch import numpy as np #矩阵对应元素运算 a=torch.tensor([[1,2],[3,4]]) b=torch.tensor([[1,2],[4,6]]) c=a*b print("每个元素相乘",c) c=torch.mm(a,b) print("矩阵乘法",c)
3:分段、化整、映射函数
clamp起的是分段函数的作用,可以用于去除矩阵中过小或者过大的元素,round函数将小数部分化整,tanh计算双曲正切函数,该函数将值映射到0,1
代码如下
import torch import numpy as np #特定功能函数 #clamp分段 a=torch.tensor([[1,2],[3,4]]) print(torch.clamp(a,min=2,max=3)) #round化整 a=torch.tensor([[1.1,0.5],[0.6,-1.2]]) print(torch.round(a)) #tanh双曲正切 映射到0 1 print(torch.tanh(a))
四、arange等方法创建数据
除了直接从ndarray或list类型的数据中创建Tensor外,PyTorch还提供了一些函数可以直接创建数据,这类函数往往需要提供矩阵的维度,它和python内置的range的使用方法基本想吐,其第三个参数是步长,linsapce函数第三个参数指定返回的个数。ones返回全1,zeors返回全0
import torch import numpy as np #直接 创建数据 print(torch.arange(5)) print(torch.arange(1,5,2)) print(torch.linspace(0,5,10)) #全0 全1 print(torch.ones(3,3)) print(torch.zeros(3,3))
五、rand返回随机数
rand返回从0 1均匀分布采样的元素所组成的矩阵,randn返回从正态分布采样的元素所组成的矩阵,randint返回指定区间的均匀分布采样的随机整数所组成的矩阵
代码如下
import torch import numpy as np print('torch.tensor 默认为:{}'.format(torch.Tensor(1).dtype)) a=torch.tensor([[1,2],[3,4]],dtype=torch.float64) print(a) #cpu -gpu之间转换 c=torch.ones((2,2)) c=c.to('cpu',torch.double) print(c.device) #矩阵对应元素运算 a=torch.tensor([[1,2],[3,4]]) b=torch.tensor([[1,2],[4,6]]) c=a*b print("每个元素相乘",c) c=torch.mm(a,b) print("矩阵乘法",c) #特定功能函数 #clamp分段 a=torch.tensor([[1,2],[3,4]]) print(torch.clamp(a,min=2,max=3)) #round化整 a=torch.tensor([[1.1,0.5],[0.6,-1.2]]) print(torch.round(a)) #tanh双曲正切 映射到0 1 print(torch.tanh(a)) #直接 创建数据 print(torch.arange(5)) print(torch.arange(1,5,2)) print(torch.linspace(0,5,10)) #全0 全1 print(torch.ones(3,3)) print(torch.zeros(3,3)) #随机 print(torch.rand(3,3)) print(torch.randn(3,3)) print(torch.randint(0,9,(3,3)))
创作不易 觉得有帮助请点赞关注收藏~~~