pytorch学习笔记(1):tensor 一定坚持学完啊!!

本文是PyTorch学习笔记的第一部分,主要介绍了张量(tensor)的创建方法,包括直接创建、依据数值创建和依据概率创建。详细讲述了torch.tensor(), torch.from_numpy(), torch.zeros(), torch.ones(), torch.full(), torch.arrange(), torch.linspace(), torch.logspace(), torch.eye(), torch.normal(), torch.randn(), torch.rand(), torch.randperm()和torch.bernoulli()等函数的用法和功能。" 70278049,5595882,iOS UI动画详解,"['iOS开发', '动画技术', '用户界面', 'Core Animation']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tensor

tensor:张量,有点像向量

tensor的属性:
data:数据
dtype:张量的数据类型 如:torch.FloatTensor
shape:张量的形状
device:张量所在的设备
requires_grad:是否需要求导
grad:data的梯度
grad_fn:创建Tensor的function
is_leaf:是否为叶子结点

1.直接创建

通过torch.tensor()创建

a = np.ones((3, 1))
# t = torch.tensor(a,device='cuda')
t = torch.tensor(a)
print(t)

通过torch.from_numpy()创建

从numpy创建tensor
numpy中的数据与tensor中的数据使用的同一个内存,一个数据改变另一个也会改变

b = np.array([[1, 2, 3], [4, 5, 6]])
tb = torch.from_numpy(b)
print(tb)
b[0,0] = 0
print(tb)

2.依据数值创建

1.torch.zeros()创建全0的张量

torch.zeros(
size, 张量大小
out,
layout,内存中的布局形式,有strided sparse_coo
device,
requires_grad
)

out_t=torch.zeros([1])
t=torch.zeros((3,3),out=out_t)
print(t,'\n',out_t)
print(id(t)==id(out_t))

2.torch.zero_like()创建与input同大小的全0张量

torch.zeros_like(
input, 创建与input同星湖脏的全0张量
dtype,
layout,
device,
requires_gard
)

3.torch.ones()创建全1张量

torch.ones(
size,
out,
layout,内存中的布局形式,有strided sparse_coo
device
requires_grad
)

4.torch.full()创建张量值全为full_value的张量

torch.full(
size,
full_value:张量的值
out,
layout,内存中的布局形式,有strided sparse_coo
device
requires_grad
)
c=torch.full((3,3),1)
print(c)

torch.full_like(
input, 创建与input同星湖脏的全0张量
dtype,
layout,
device,
requires_gard
)

5.torch.arrange()创建等差的一维张量 数值区间为[start,end) 步长为step

torch.arange(
strat=0,
end,
step=1
out,
dtype,
layout
device
requires_grad
)
创建等差的1维张量 数值区间为:[strat,end)
t=torch.arange(1,10)
print(t)

6.torch.linspace() 创建均分的一维张量 数值区间为[start ,end] 数列的长度为:step

"""
torch.linspace(
start,
end,
steps,#数列的长度
out,
dtype,
layout,
device,
requires_grad
)
创建均分的1维张量
数值区间[start,end]
"""
t=torch.linspace(1,10,5)
print(t)

7.torch.logspace()创建对数均分的1维张量 数值区间为[start ,end] 数列的长度为:step 对数的低为:base 默认为10

创建对数均分的1维张量
torch.logspace(
start,
end,
steps,#数列的长度
base,对数的低 默认为10
out,
dtype,
layout,
device,
requires_grad
)

8.torch.eye()创建单位对角矩阵 n #矩阵的行 m #矩阵的列

创建单位对角矩阵
torch.eye(
n #矩阵的行
m #矩阵的列
out,
dtype,
layout,
device,
requires_grad

)

3.依据概率创建

1.torch.normal()创建高斯分布

高斯分布
依据概率分布创建
torch.normal(
mean,均值
std,标准差
out
)

mean=torch.arange(1,5,dtype=torch.float)
std=torch.arange(1,5,dtype=torch.float)
t_n=torch.normal(mean,std)
print("mean{},std{}".format(mean,std))
print(t_n)

2.torch.randn()创建标准正态分布

#标准正态
torch.randn(
size,
out,
dtype,
layout,
device,
requires_grad
)
torch.randn_like(
input,
out,
dtype,
layout,
device,
requires_grad
)

3.torch.rand()创建均匀分布[0,1)

#均匀分布[0,1)
torch.rand(
size
out,
dtype,
layout,
device,
requires_grad
)
torch.randint(
low,
high,
size
out,
dtype,
layout,
device,
requires_grad
)
#区间[low,high)

4.torch.randperm()创建0 ——n-1的随机分布

#0-n-1的随机排列
torch.randperm(
n,
out,
dtype,
layout,
device,
requires_grad
)

5.torch.bernoulli()以input为概率,生成伯努利分布

#以input为概率生成伯努利分布
torch.bernoulli(
input,
generator,
out
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值