tensor这个单词一般可译为张量,张量可以看作是一个多维数组。标量可以看作是一个0维张量,向量可以看作1维张量,矩阵可以看做是2维张量
首先导入PyTorch
import torch
创建一个5*3的未初始化的tensor
torch.empty()创建一个使用未初始化值填满的tensor,若电脑显示全为0,表示显卡精度不够
x = torch.empty(5,3)
print(x)
输出结果 tensor([[9.6428e-39, 1.1112e-38, 9.5511e-39], [1.0102e-38, 1.0286e-38, 1.0194e-38], [9.6429e-39, 9.2755e-39, 9.1837e-39], [9.3674e-39, 1.0745e-38, 1.0653e-38], [9.5510e-39, 1.0561e-38, 1.0194e-38]])
创建一个5*3的随机初始化Tensor
torch.rand(sizes):返回从区间[0,1)的均匀分布中抽取一组随机数
x = torch.rand(5,3)
print(x)
输出结果 tensor([[0.2646, 0.0520, 0.8037], [0.3172, 0.6981, 0.9442], [0.2225, 0.8363, 0.4236], [0.6014, 0.7321, 0.5833], [0.3002, 0.8634, 0.1832]])
创建一个5*3的long型的Tensor
dtype = torch.long表示创建的是长整型
x = torch.zeros(5,3,dtype=torch.long)
print(x)
输出结果 tensor([[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]])
可以直接根据数据创建
torch.tensor()函数原型:torch.tensor(data,dtype=None,device=None,requires_grad=False) 其中data可以是:list,tuple,Numpy,ndarray,scalar和其他类型 torch.tensor会从data中的数据部分做拷贝(不是直接引用),根据原始数据生成相应的torch.LomgTensor、torch.FloatTensor和torch.DoubleTensor。
x = torch.tensor([5.5,3])
print(x)
输出结果 tensor([5.5000, 3.0000])
可以通过现有的Tensor来创建,此方法会默认重用输入Tensor的一些属性,例如数据类型,除非自定义数据类型 dtype=torch.float就是类型改为浮点数 dtype=torch.double与dtype=torch.float64相同
x = x.new_ones(5,3,dtype=torch.float64)#返回的tensor默认具有相同的torch.dtype和torch.device
print(x)
x = torch.randn_like(x,dtype=torch.float)#指定新的数据类型
print(x)
输出结果 tensor([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.]], dtype=torch.float64) tensor([[ 1.9308, -0.5426, -0.4061], [ 0.4690, -0.2970, 1.9803], [-0.0143, -1.6829, 1.3402], [ 0.7586, -1.0486, 0.8056], [-0.8269, -0.3711, -0.4047]])
通过shape或者size()来获取Tensor的形状
print(x.size())
print(x.shape)
输出结果 torch.Size([5, 3]) torch.Size([5, 3])
注意:返回得到torch.Size其实是一个tuple,支持所有的tuple操作