Pytorch中张量与Tensor()

一、张量Tensor

张量是一个统称,其中包含很多类型:

  1. 0阶张量: 标量、常数,0-D Tensor
  2. 1阶张量: 向量,1-D Tensor
  3. 2阶张量: 矩阵,2-D Tensor
  4. 3阶张量
  5. ...
  6. N阶张量

二、Pytorch中使用torch.Tensor()创建张量

  1. 使用python中的列表或者序列创建tensor
# 使用python中的列表或者序列创建tensor
t1 = torch.Tensor([[1, -1],[1, -1]])
print(t1)
  1. 使用numpy中的数组创建tensor
# 使用numpy中的数组创建tensor
t2 = torch.Tensor(np.array([[1, -1], [1, -1]]))
print(t2)
  1. 使用torch中的api创建tensor
  • torch.empty(3,4)创建3行4列的空的tensor,会用无用数据进行填充
  • torch.ones([3,4]) 创建3行4列的全为1的tensor
  • torch.zeros([3,4]) 创建3行4列的全为0的tensor
  • torch.rand([3,4]) 创建3行4列的随机值的tensor,随机值的区间是[0,1)
  • torch.randint(low=0,high=10,size=[3,4]) 创建3行4列的随机整数的tensor,随机值的区间是[low,high)
  • torch.randn([3,4]) 创建3行4列的随机数的tensor,随机值的分布式均值为0,方差为1
# 使用torch的api创建
# 创建空的tensor
print(torch.empty(3, 4))
# 创建全为0的tensor
print(torch.zeros([3, 4]))
# 创建全为1的tensor
print(torch.ones([3, 4]))
# 创建随机的tensor,随机值区间[0, 1)
print(torch.rand(3, 4))
# 创建随机整数tensor,随机值区间在low=3,high=10
print(torch.randint(3, 10, [3, 4]))
# 创建随机的tensor,随机值分布式均值为0,方差为1
print(torch.randn([3, 4]))

三、pytorch中torch.tensor()创建张量

torch.tensor(data, dtype=None, device=None, requires_grad=False)
a = torch.tensor([1,2])

四、Pytorch中tensor的常用方法

  1. 获取tensor中的数据(当tensor中只有一个元素可用):tensor.item()
  2. 转化为numpy数组
  3. 获取大小
  4. 形状改变
  5. 获取维度
  6. 最大值、最小值
  7. 转置
  8. tensor取元素值和切片
# 张量常用方法
# 获取tensor中的数据(当tensor中只有一个元素可用)
print(torch.Tensor([[[1]]]).item())
# 转化为numpy
print(torch.Tensor([[1, 2], [3, 4]]).numpy())
# 获取大小
print(torch.Tensor([[1, 2], [3, 4]]).size())
print(torch.Tensor([[1, 2], [3, 4]]).shape)
# 形状改变
print(torch.Tensor([[1, 2, 3], [4, 5, 6]]).view([3, 2]))
# 获取维度
print(torch.Tensor([[1, 2, 3], [4, 5, 6]]).dim())
# 最大值、最小值
print(torch.Tensor([[1, 2, 3], [4, 5, 6]]).max())
print(torch.Tensor([[1, 2, 3], [4, 5, 6]]).min())
# 转置
# tensor.t()是直接全部转置
# tensor.transpose()是轴交换,只能选择tensor中两个维度进行转置
# tensor.permute()也是轴交换,可以让tensor按照指定维度顺序进行转置
print(torch.Tensor([[1, 2, 3], [4, 5, 6]]).t())
print(torch.Tensor([[1, 2, 3], [4, 5, 6]]).transpose(0, 1))
print(torch.Tensor([[1, 2, 3], [4, 5, 6]]).permute(1, 0))

# tensor取元素值和切片
t3 = torch.Tensor([[[1, 2, 3],[4, 5, 6]],[[7, 8, 9],[10, 11, 12]],[[13, 14, 15],[16, 17, 18]]])
print(t3[1, 1, 0])
print(t3[1, :, :])