pytorch基础(一)-----------张量的创建

张量在深度学习中是一个经常使用的,张量是一个多维数组,它是标量、向量、矩阵的高维拓展(1*1的数组称为标量、一维数组称为向量,二维数组称为矩阵)。张量的属性有:
dtype:张量的数据类型
shape:张量的形状
device:张量所在的设备,例如GPU/CPU
data:被包装的tensor
grad:data的梯度
grad_fn:创建张量的function,是自动求导的关键
requires_grad:是否需要梯度
is_leaf:是否是叶子节点

张量的创建

一、直接创建

1、通过数据创建
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:是否存于锁页内存

2、通过numpy数组创建
torch.form_numpy(ndarray)
注意:通过这种方式创建的tensor与原数组共享内存,当修改其中一个,另外一个也会被修改

二、依据数值创建

1、创建全零张量
torch.zeros(size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数解释:
size:张量的形状
out:输出的张量
layout:内存中的布局形式,有strided、sparse_coo等
device:所在设备,gpu/cpu
requires_grad:是否需要梯度

2、依据输入的形状创建全零张量
torch.zeros_like(input, dtype=None, layout=None, device=None, requires_grad=False)
参数解释:
input: 创建与input同形状的全零张量
dtype:数据类型
layout:内存中的布局形式

3、创建全1张量和依据输入创建全1张量
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)

4、依据数值创建
torch.full(size, full_value, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
torch.full_like(input, full_value, dtype=None, layout=None, device=None, requires_grad=False)
size:张量的形状
full_value:需要填充的张量的值(比如创建一个3*3全是9的张量,size=(3, 3),full_value=9)

5、创建等差的一维张量
torch.arange(start=0, end, step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
注意:数值的区间为[start, end)
参数解释:
start:数列的起始值
end:数列的终止
step:公差

6、创建等比的一维张量
torch.linspace(start, end, steps=100, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
注意:数值区间为[start, end]
参数解释:
start:数列的起始值
end:数列的终止
step:数列长度

7、创建对数均分的一维张量
torch.logspace(start, end, steps=100, base=10.0, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数解释:
start:数列的起始值
end:数列的终止
step:数列长度
base:对数函数的底,默认为10

8、创建单位对角张量(二维)
torch.eye(n, m=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
注意:默认为方阵
参数解释:
n:矩阵列数
m:矩阵行数

9、创建正态分布(高斯分布)
torch.normal(mean, std, out=None)
参数解释:
mean:均值
std:标准差

10、创建标准正态分布
torch.randn(size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数解释:
size:张量形状
torch.randn_like()

11、创建[0, 1)上的均匀分布张量
torch.randint(low=0, high, size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
torch.randint_like()

三、依据概率分布创建张量

1、创建从0~n-1的随机排列张量
torch.randperm(n, out=None, dtype=torch.int64, layout=torch.strided, device=None, requires_grad=False)
参数解释:
n:张量长度

2、创建伯努利分布张量
torch.bernoulli(input, generator=NOne, out=None)
参数解释:
input:概率

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值