Pytorch 张量Tensor小结

买的书到了,草草一翻,补下基础还是有必要的。

这个总结可写的比文档好多了。

 

函数名 说明
torch.tensor() 传入数据如 tensor([2,3])
torch.zeros(),torch.zeros_like() 全0
torch.ones(),torch.ones_like() 全1
torch.full(),torch.full_like() full((2,3),8) 全为8
torch.empty() 不指定数据
torch.eye() 对角线为1的
torch.arange(),torch.range(),torch.linspace() 各元素等差,注意区别参数用法
torch.logspace 等比
torch.rand(),torch.rand_like() 标准均匀分布
torch.randn(),torch.randn_like(),torch.normal() 标准正态分布
torch.randint(),torch,randint_like() 离散均匀分布
torch.bernoulli() {0,1}上的两点分布
torch.multinomial() {0,1,…,n-1}上的多点分布
torch.randperm() 0~n-1的一个随机排列

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三个不改变元素相对位置

reshape()  // view()

squeeze()

unsqueeze()

 

与numpy互转

nparray = x.numpy()

torch.from_numpy(nparray)

 

查看属性

x.size()  #可以看具体数值,跟size要区别一瞎

x.data  #tensor类型

x.item() #tensor转成array类型

x.dim #维数

x.device #取出来之后可以赋值给其他tensor。 device =x.device, y.to(device)。

 

改变类型

直接转化 , 声明时 

torch.uint8 -> x.byte(),只能torch.ByteTensor()

torch.int32 ->  x.short()  ,torch.ShortTensor(x)

torch.int32 -> x.int() ,torch.IntTensor(x)

torch.int64 -> x.long() , torch.LongTensor(x)

torch.float32 -> x.float() , torch.FloatTensor(x)

torch.float64 -> x.double() , torch.DoubleTensor(x)

 

tensor_1 = torch.FloatTensor(2,3) #shape=(2,3)

x.type_as(tesnor_1) # set x to float32

 

指定设备

声明时 device = torch.device('cuda')

或者x.to(device)

 

 

torch.*like以及torch.new_*

第一个是可以创建, shape相同, 数据类型相同.

 >>> x = torch.randn(3, dtype=torch.float64)
 >>> torch.zeros_like(x)
 tensor([ 0.,  0.,  0.], dtype=torch.float64)
 >>> torch.zeros_like(x, dtype=torch.int)
 tensor([ 0,  0,  0], dtype=torch.int32)

当然如果是单纯想要得到属性与前者相同的Tensor, 但是shape不想要一致:

>>> x = torch.randn(3, dtype=torch.float64)
 >>> x.new_ones(2) # 属性一致
 tensor([ 1.,  1.], dtype=torch.float64)
 >>> x.new_ones(4, dtype=torch.int)
 tensor([ 1,  1,  1,  1], dtype=torch.int32)

 

 

 

//主要参考<<神经网络与pytorch实战>>

你可能感兴趣的:(pytorch)