pytorch中tensor创建方法

tensor的创建方法

总结

直接创建

code作用
torch.tensor()直接创建
torch.from_numpy(ndarray)从numpy创建tensor

按值创建

code作用
torch.tensor()直接创建
torch.from_numpy(ndarray)从numpy创建tensor
torch.zeros())创建全零张量
torch.ones() torch.ones_like()创建全1张量
torch.full() torch.full_like()创建全n张量(n为自定义)
torch.arange()创建等差的1维张量
torch.linspace()创建均分的1维张量
torch.logspace()创建对数均分的1维张量
torch.eye()创建单位对角矩阵( 2维张量)

按概率分布创建

code作用
torch.normal()生成正态分布(高斯分布)
torch.randn() torch.randn_like()生成标准正态分布
torch.rand() torch.rand_like()在区间【0, 1)上,生成均匀分布
torch.randint () torch.randint_like()区间【low, high)生成整数均匀分布
torch.randperm()生成生成从0到n-1的随机排列
torch.bernoulli()以input为概率,生成伯努力分布 (0-1分布,两点分布)

直接创建

使用torch.tensor()

torch.tensor(data,dtype=None,device=None,requires_grad=False,pin_memory=False)

data数据, 可以是list, numpy
dtype数据类型,默认与data的一致
device所在设备, cuda/cpu
requires_grad是否需要梯度
pin_memory是否存于锁页内存
  • 需要把张量放在GPU上,可以设置
device = `cuda`

从numpy创建tensor

使用torch.from_numpy(ndarray)
使用torch.from_numpy创建的tensor和原来ndarray共享内存

依据数值创建张量

**使用torch.zeros()**创建全零张量

torch.zeros(*size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
参数作用
size张量的形状, 如(3, 3)、(3, 224,224)
out输出的张量
layout内存中布局形式, 有 strided,sparse_coo等
device所在设备, gpu/cpu
requires_grad是否需要梯度
  • out参数
    输入
out_t = torch.tensor([1])
t = torch.zeros((3,3), out=out_t)

打印结果

out_t与t是相同的

使用torch.zeros_like()

依据input的形状创建全0张量

torch.zeros_like(input,
dtype=None,
layout=None,
device=None,
requires_grad=False)

创建全1张量

使用torch.ones()
使用torch.ones_like()

torch.ones(*size,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
torch.ones_like(input,dtype=None,layout=None,device=None,requires_grad=False)

自定义数值创建张量

使用torch.full()
使用torch.full_like()

torch.full(size,
fill_value,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)

其中fill_value为张量的值

创建等差的1维张量

使用torch.arange()

torch.arange(start=0,
end,
step=1,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
  • start : 数列起始值
  • **end **: 数列“结束值”
  • step: 数列公差,默认为1

创建均分的1维张量

使用torch.linspace()

torch.arange(start=0,
end,
step=1,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
  • start : 数列起始值
  • end : 数列结束值
  • steps: 数列长度

创建对数均分的1维张量

使用torch.logspace()

torch.logspace(start,
end,
steps=100,
base=10.0,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
  • start : 数列起始值
  • end : 数列结束值
  • steps: 数列长度
  • base : 对数函数的底,默认为10

创建单位对角矩阵( 2维张量)

使用torch.eye()

torch.eye(n,
m=None,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
  • n: 矩阵行数
  • m : 矩阵列数

依据概率分布来创建张量

生成正态分布(高斯分布)

使用torch.normal()

torch.normal(mean,
std,
out=None)
  • mean : 均值(可为标量,也可为张量)
  • std : 标准差(可为标量,也可为张量)

均值和标准差都是张量的时候需要给出size

torch.normal(mean,
std,
size,
out=None)

生成标准正态分布

使用torch.randn()
使用torch.randn_like()

torch.randn(*size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
  • size : 张量的形状

在区间【0, 1)上,生成均匀分布

使用torch.rand()
使用torch.rand_like()

区间【low, high)生成整数均匀分布

使用torch.randint ()
使用torch.randint_like()

生成生成从0到n-1的随机排列

使用torch.randperm()

  • n : 张量的长度

以input为概率,生成伯努力分布 (0-1分布,两点分布)

使用torch.bernoulli()

torch.bernoulli(input,
*,
generator=None,
out=None)
  • input : 概率值
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值