pytorch张量的创建

张量的创建

  • 张量(Tensors)类似于NumPy的ndarrays ,但张量可以在GPU上进行计算。从本质上来说,PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。
python 复制代码
import torch
import numpy
torch.manual_seed(7) # 固定随机数种子

直接创建

  1. torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False)
  2. 功能:从data创建tensor
    • data: 数据,可以是list,numpy
    • dtype: 数据类型,默认与data的一致
    • device: 所在设备,cuda/cpu
    • requires_grad: 是否需要梯度
    • pin_memory: 是否存于锁页内存
python 复制代码
torch.tensor([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]])

tensor([[0.1000, 1.2000],
,        [2.2000, 3.1000],
,        [4.9000, 5.2000]])
  1. torch.from_numpy(ndarray)
  2. 功能:从numpy创建tensor

从torch.from_numpy创建的tensor于原ndarray共享内存,当修改其中一个数据,另一个也将会被改动。

python 复制代码
a = numpy.array([1, 2, 3])
t = torch.from_numpy(a)

依据数值创建

  1. torch.zeros(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
  2. 功能:依size创建全0张量
    • size: 张量的形状
    • out: 输出的张量
    • layout: 内存中布局形式
    • device: 所在设备
    • requires_grad: 是否需要梯度
python 复制代码
torch.zeros(2, 3)

tensor([[0., 0., 0.],
,        [0., 0., 0.]])
  1. torch.zeros_like(input, dtype=None, layout=None, device=None, requires_grad=False)
  2. 功能:依input形状创建全0张量
    • input: 创建与input同形状的全0张量
    • dtype: 数据类型
    • layout: 内存中布局形式
python 复制代码
input = torch.empty(2, 3)
torch.zeros_like(input)

tensor([[0., 0., 0.],
,        [0., 0., 0.]])
python 复制代码
torch.ones(2, 3)

tensor([[1., 1., 1.],
,        [1., 1., 1.]])
  1. torch.ones_like(input, dtype=None, layout=None, device=None, requires_grad=False)
  2. 功能:依input形状创建全1张量
    • size: 张量的形状
    • dtype: 数据类型
    • layout: 内存中布局形式
    • device: 所在设备
    • requires_grad: 是否需要梯度
python 复制代码
input = torch.empty(2, 3)
torch.ones_like(input)

tensor([[1., 1., 1.],
,        [1., 1., 1.]])
  1. torch.full_like(input, dtype=None, layout=torch.strided, device=None, requires_grad=False)
  2. 功能: 依input形状创建指定数据的张量
    • size: 张量的形状
    • fill_value: 张量的值
  3. torch.arange(start=0, end. step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
  4. 功能:创建等差的1维张量
    • start: 数列起始值
    • end: 数列结束值
    • step: 数列公差,默认为1
python 复制代码
torch.arange(1, 2.5, 0.5)

tensor([1.0000, 1.5000, 2.0000])

依概率分布创建张量

torch.normal(mean, std, out=None) : 生成正态分布

python 复制代码
# mean为张量, std为张量
torch.normal(mean=torch.arange(1., 11.), std=torch.arange(1, 0, -0.1))

tensor([0.8532, 2.7075, 3.7575, 3.2200, 6.0145, 5.5526, 6.8577, 8.3697, 9.0276,
,        9.8318])

torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) : 生成标准正态分布

python 复制代码
torch.randn(2, 3)

tensor([[1.3955, 1.3470, 2.4382],
,        [0.2028, 2.4505, 2.0256]])

torch.rand(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) : 在[0,1)上,生成均匀分布

python 复制代码
torch.rand(2, 3)

tensor([[0.7405, 0.2529, 0.2332],
,        [0.9314, 0.9575, 0.5575]])

张量拼接与切分

torch.cat(tensors, dim=0, out=None) : 将张量按维度进行拼接

python 复制代码
x = torch.randn(2, 3)
torch.cat((x, x, x), 1)

# 
tensor([[-1.7038,  0.6248,  0.1196, -1.7038,  0.6248,  0.1196, -1.7038,  0.6248,
,          0.1196],
,        [-0.8049,  1.6162,  0.2516, -0.8049,  1.6162,  0.2516, -0.8049,  1.6162,
,          0.2516]])

torch.stack(tensors, dim=0, out=None) :在新创建的维度上进行拼接

torch.chunk(input, chunks, dim=0) : 将张量按维度进行平均切分

相关推荐
IT毕设实战小研1 分钟前
基于大数据的AI应用对就业与收入增长的区域差异分析及可视化
大数据·人工智能·python·随机森林·机器学习·课程设计
音视频牛哥6 分钟前
世界模型如何重塑具身智能:从VLA到预测式机器人控制
人工智能·具身智能·世界模型·world model·vla模型·多模态感知·机器人决策
浅安的邂逅6 分钟前
260902-Qwen3.8-Max-0902 登顶 Code Arena WebDev:1691 分超 Opus 5
人工智能·ai模型·行业动态·产品发布/更新·模型发布/更新
摆烂老大8 分钟前
论文学习 | Expert Systems With Applications2026 | 可微分建模:S4D-HBV
python·学习·水文
力学与人工智能9 分钟前
智能流体力学专题研讨会特邀报告3|边鑫:混合深度学习与迭代方法的粘性不可压流动加速求解
人工智能·深度学习·流体力学·ppt分享
顿哥GPT10 分钟前
ChatGPT Plus / Pro + Codex 实战指南(2026年9月2日)
人工智能·chatgpt
mit6.82416 分钟前
AI时代的定位与趋势
人工智能
深念Y22 分钟前
Cloudflare Workers AI 服务部署记录
人工智能·语音识别
gsls20080823 分钟前
OpsKat封装MCP:用 Go 标准库把运维 CLI 变成 AI 的“手“
运维·人工智能·golang·mcp
程序员夏洛24 分钟前
谈谈你了解的最常见的几种设计模式,说说他们的应用场景
开发语言·python·模板方法模式