pytorch中张量的三种创建方式(有代码实现)

本文详细介绍了PyTorch中创建张量的三种主要方式:直接创建、依据数值创建和依概率分布创建。包括torch.tensor()、torch.from_numpy()、torch.zeros()、torch.ones()、torch.full()、torch.arange()、torch.linspace()、torch.logspace()、torch.eye()、torch.normal()、torch.randn()、torch.rand()、torch.randint()以及torch.bernoulli()等函数的使用,每个函数都有代码实例展示其创建张量的过程。
摘要由CSDN通过智能技术生成
import torch
import numpy as np

直接创建

torch.tensor(data, dtype=None, device=None, requiers_grad=False,
pin_memory=False) # 从data创建tensor
torch.from_numpy(ndarray) # 从numpy创建tensor
data:数据,可以是list,numpy
dtype:数据类型,默认与data一致
device:所在设备 gpu/cpu
requores_grad:是否需要梯度
pin_memory:是否存于锁页内存

mat = np.array([[1,2,3],
               [2,3,4],
               [3,4,5]])
torch.tensor(mat)

tensor([[1, 2, 3],
[2, 3, 4],
[3, 4, 5]], dtype=torch.int32)

lt = [1,2,3,4,5,6,7,8,9]
torch.tensor(lt)

tensor([1, 2, 3, 4, 5, 6, 7, 8, 9])

依据数值创建

2.1 torch.zeros(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) # 按size创建全0张量

size:张量的形状 如(3,3) (3,5,5)
out:输出的张量
dtype:数据的类型
layout:内存中布局形式,有strided,sparse_coo等
device:所在设备 gpu/cpu
requires_grad:是否需要梯度
torch.zeros(3,3) # 也可以写成torch.zeros((3,3))效果一样,也是创建一个(3,3)的全0张量

tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])

2.2 torch.zeros_like(input, dtype=None, layout=None, device=None, requires_grad=False) # 依据input形状创建全0张量¶

input:input是一个张量,依据input的形状创建一个全零张量
dtype:数据类型
layout:内存中布局形式
device:所在设备,gpu/cpu
requires_grad:是否需要梯度
t1 = torch.tensor([[1,2,3],
                 [2,3,4],
                 [3,4,5]]) # 创建一个3x3的张量
t2 = torch.zeros_like(t1)
print('t1:{},t1.shape:{}\nt2:{},t2.shape:{}'.format(t1,t1.shape,t2,t2.shape))

t1:tensor([[1, 2, 3],
[2, 3, 4],
[3, 4, 5]]),t1.shape:torch.Size([3, 3])
t2:tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]),t2.shape:torch.Size([3, 3])

2.3 torch.ones(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) # 依size创建全1张量
2.4 torch.ones_like(input, dtype=None, layout=torch.strided, device=None, requires_grad=False) # 依据input形状创建全1张量

size:张量的形状 如(3,3) (3,255,255)
input:输入的张量,依据input张量的形状创建全1张量
dtype:数据类型
layput:内存中的布局形式
device:所在设备 GPU/CPU
requires_grad:是否需要梯度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值