Tensors(张量)
tensors张量:张量的概念类似于Numpy中的ndarray的数据结构,最大的区别在于Tensor可以利用GPU的加速功能。我们使用pytorch的时候,常规步骤是先将torch引用进来
from __future__ import print_function
import torch
创建一个没有初始化的矩阵
x = torch.empty(5,3)
创建一个随机初始化的矩阵
#符合均匀分布
x = torch.rand(5,3)
#符合标准正态分布
x = torch.randn(5,3)
对比有无初始化的矩阵,当声明一个未初始化的矩阵时,它本身不包含任何确切的值,当创建一个未初始化的矩阵时,分配给矩阵的内存中有什么数值就赋值给了这个矩阵,本质上时没有什么意义的数据。
创建一个全为零矩阵并指定数据元素的类型为long
x = torch.zeros(5,3,dtype=torch.long)
构造一个张量,直接使用数据[5.5,3]:
x = torch.tensor([5.5,3])
创建一个 tensor 基于已经存在的 tensor。
#都一种方式创建一个size大小相同填充全为1的矩阵
x = x.new_ones(5, 3, dtype=torch.double)
print(x)
#第二种方式,创建size相同随机数填充的矩阵
x = torch.randn_like(x, dtype=torch.float)
print(x)
获取他的维度信息,注意torch.size是一个元组,所以它支持左右的元组操作
x=x.new_ones(5,3,dtype=torch.double)
print(x)
x.size()
矩阵的加法
#加法方式1:
y = torch.rand(5,3)
print(x+y)
#加法方式2:
print(torch.add(x,y))
#加法方式3:
result = torch.empty(5,3) #创建一个(5,3)的空矩阵
torch.add(x,y,out=result)
print(result)
#加法方式4
y.add_(x)
print(y)
有类似于Numpy的方式对张量进行操作
print(x[:,1])#对第2列进行切片
print(x[2,:])#对第3行进行切片操作
改变大小:如果你想改变一个 tensor 的大小或者形状,你可以使用 torch.view,注意操作需要保证数据元素的总数不变。
x = torch.randn(4,4)
y = x.view(16)
z= x.view(-1,8)#-1代表的数值,是从其他维度推断出来的
print(x.size(),y.size(),z.size())