import torch
print(torch.__version__)
torch.empty(3,4)创建3行4列的空的tensor,会用无用数据进行填充(手工填充torch.fill_)
empty = torch.empty([3,4])
torch.fill_(empty,3)
torch.arange(start, end, step) 从start到end以step为步长取值生成序列
torch.arange(1,6,2)
torch.range(start=1, end=6)的结果是会包含end的,
而torch.arange(start=1, end=6)的结果并不包含end。
两者创建的tensor的类型也不一样
arange为torch.int64
range为torch.float32
torch.rand(3,4) 创建3行4列的随机值的tensor,随机值的区间是[0, 1)
torch.randint(low=0,high=10,size=[3,4]) 创建3行4列的随机整数的tensor,随机值的区间是[low, high),不包括最后的high
torch.randn(3,4) 创建3行4列的随机数的tensor,随机值的分布式均值为0,方差为1
当tensor中只有一个元素时,tensor.item() 可以获取这个元素
但是当元素不是tensor类型时,不能使用这个方法
获取形状
tensor.size()
tensor.shape
获取数据类型
tensor.dtype
获取数据的维度
a.dim()
tensor.view(2,3) tensor.reshape(2,3)
x = torch.tensor([[1,2],[3,4],[5,6]])
x.shape
x.reshape(2,3)
x.view(2,3)
tensor.t() 或tensor.transpose(dim0, dim1) 转置
x.t() #也可用x.T 无法指定维度
x.transpose(0,1) #指定需要转置的维度
tensor.permute 变更tensor的轴(多轴转置)
需求:把[4,2,3]转置成[3,4,2],如果使用transpose 需要转两次: [4,2,3] ->[4,3,2]->[3,4,2]
使用transpose
torch.transpose(1,2)
torch.transpose(0,1)
使用permute
torch.permute(2,0,1)
tensor.unsqueeze(dim)
tensor.squeeze()填充或者压缩维度
tensor.squeeze() 默认去掉所有长度是1的维度
也可以填入维度的下标,指定去掉某个维度
tensor.unsqueeze() 扩充维度
创建数据的时候指定类型
a = torch.ones(2,3,dtype = torch.int32)
print(a.dtype)
a = a.type(torch.float) #a.float()
print(a.dtype)
a = a.double()
print(a.dtype)