尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Quick Reference 仓库中的 Pytorch 速查表:张量操作、CUDA 加速与模型导出实战指南

发布时间:2026/9/24 7:39:01

资讯中心
01
ARTICLE

Quick Reference 仓库中的 Pytorch 速查表:张量操作、CUDA 加速与模型导出实战指南

Quick Reference 仓库中的 Pytorch 速查表:张量操作、CUDA 加速与模型导出实战指南
文档知识库教程开发工具【免费下载链接】reference为开发人员分享快速参考备忘清单(速查表)项目地址https://gitcode.com/jaywcjlove/reference点击查看免费下载本文以 Quick Referencejaywcjlove/reference仓库中的 docs/pytorch.md 备忘清单为骨架系统梳理 Pytorch 张量的创建与运算、形状变换、Tensor 与 NumPy 互转、CUDA 设备管理以及神经网络、TorchScript、ONNX、Torchvision 与分布式训练的导入与使用要点帮助读者快速掌握从原型实验到模型导出的高频语法。认识 Pytorch 与张量TensorPytorch 是一种开源机器学习框架可加速从研究原型设计到生产部署的过程。其核心数据结构是张量Tensor概念上类似于 NumPy 中的ndarray最大的区别在于 Tensor 可以利用 GPU 的加速功能。torch.empty()会分配未初始化内存因此输出内容取决于当时内存中的随机值属正常现象from __future__ import print_function import torch x torch.empty(5, 3) print(x) tensor([ [2.4835e27, 2.5428e30, 1.0877e-19], [1.5163e23, 2.2012e12, 3.7899e22], [5.2480e05, 1.0175e31, 9.7056e24], [1.6283e32, 3.7913e22, 3.9653e28], [1.0876e-19, 6.2027e26, 2.3685e21] ])torch.empty(5, 3)创建一个形状为5×3、尚未初始化数值的二维张量。与empty相对torch.zeros()创建全零矩阵并通过dtype指定数据元素类型x torch.zeros(5, 3, dtypetorch.long) print(x) tensor([[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]])而torch.tensor()则直接从已有数据创建张量x torch.tensor([2.5, 3.5]) print(x) tensor([2.5000, 3.3000])提示torch.tensor()总是会复制数据若希望复用已有数据的内存可优先考虑torch.as_tensor()或torch.from_numpy()。张量运算四种加法写法备忘清单给出了x y的四种等价写法覆盖了运算符重载、函数式 API、指定输出张量与原地in-place修改四种风格加法操作1运算符重载y torch.rand(5, 3) print(x y) tensor([[ 1.6978, -1.6979, 0.3093], [ 0.4953, 0.3954, 0.0595], [-0.9540, 0.3353, 0.1251], [ 0.6883, 0.9775, 1.1764], [ 2.6784, 0.1209, 1.5542]])加法操作2函数式 API print(torch.add(x, y)) tensor([[ 1.6978, -1.6979, 0.3093], [ 0.4953, 0.3954, 0.0595], [-0.9540, 0.3353, 0.1251], [ 0.6883, 0.9775, 1.1764], [ 2.6784, 0.1209, 1.5542]])加法操作3指定输出张量# 提前设定一个空的张量 result torch.empty(5, 3) # 将空的张量作为加法的结果存储张量 torch.add(x, y, outresult) print(result) tensor([[ 1.6978, -1.6979, 0.3093], [ 0.4953, 0.3954, 0.0595], [-0.9540, 0.3353, 0.1251], [ 0.6883, 0.9775, 1.1764], [ 2.6784, 0.1209, 1.5542]])加法操作4in-place 修改y.add_(x) print(y) tensor([[ 1.6978, -1.6979, 0.3093], [ 0.4953, 0.3954, 0.0595], [-0.9540, 0.3353, 0.1251], [ 0.6883, 0.9775, 1.1764], [ 2.6784, 0.1209, 1.5542]])注意所有in-place的操作函数都有一个下划线的后缀比如x.copy_(y)、x.add_(y)都会直接改变x的值不产生新张量。张量索引与形状变换与 NumPy 一致Pytorch 支持下标切片操作 print(x[:, 1]) tensor([-2.0902, -0.4489, -0.1441, 0.8035, -0.8341])x[:, 1]取出所有行的第 1 列得到形状为(5,)的一维张量。view()用于重塑张量形状核心约束是数据元素的总数量必须保持不变其中-1表示该维度由 Pytorch 自动推导x torch.randn(4, 4) # tensor.view()操作需要保证数据元素的总数量不变 y x.view(16) # -1代表自动匹配个数 z x.view(-1, 8) print(x.size(), y.size(), z.size()) torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])当张量只有一个元素时可用item()取出其 Python 标量值x torch.randn(1) print(x) print(x.item()) tensor([-0.3531]) -0.3530771732330322squeeze 与 unsqueeze增删维度squeeze用于去除维度大小为 1 的轴unsqueeze用于在指定位置插入大小为 1 的轴。二者既可作为张量方法x.squeeze()也可作为模块级函数torch.squeeze(x)调用。 x torch.rand(1, 2, 1, 28, 1) # squeeze不加参数默认去除所有为1的维度 x.squeeze().shape torch.Size([2, 28]) # squeeze加参数去除指定为1的维度 x.squeeze(dim0).shape torch.Size([2, 1, 28, 1]) # squeeze加参数如果不为1则不变 x.squeeze(1).shape torch.Size([1, 2, 1, 28, 1]) # 既可以是函数也可以是方法 torch.squeeze(x,-1).shape torch.Size([1, 2, 1, 28]) x torch.rand(2, 28) # unsqueeze必须加参数 _ 2 _ 28 _ x.unsqueeze(0).shape # 参数代表在哪里添加维度 0 1 2 torch.Size([1, 2, 28]) # 既可以是函数也可以是方法 torch.unsqueeze(x, -1).shape torch.Size([2, 28, 1])unsqueeze常用于为数据补充 batch 维度或通道维度例如将形状(2, 28)的样本扩展为(1, 2, 28)以满足卷积层或 RNN 的输入要求squeeze则常用于在网络输出后去除多余的单一维度。Torch Tensor 与 Numpy array 互换Pytorch 与 NumPy 生态互通是日常实验的高频操作。二者在 CPU 上共享底层内存空间改变其中一个的值另一个也会随之被改变a torch.ones(5) print(a) tensor([1., 1., 1., 1., 1.])Torch Tensor 转换为 Numpy array通过.numpy()b a.numpy() print(b) [1. 1. 1. 1. 1.]Numpy array 转换为 Torch Tensor通过torch.from_numpy()import numpy as np a np.ones(5) b torch.from_numpy(a) np.add(a, 1, outa) print(a) print(b) [2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2.], dtypetorch.float64)上面示例中np.add(a, 1, outa)原地修改了 NumPy 数组a由于b与a共享内存b也同步变为全 2。注意所有在 CPU 上的 Tensors除了CharTensor都可以转换为 Numpy array 并可以反向转换。基于共享内存的特性无需复制即可在两套生态间传递数据但也要留意改一即改二带来的副作用若需独立副本应使用.clone()或.copy_()。Cuda 相关操作深度学习训练往往依赖 GPU 加速备忘清单给出了 CUDA 环境检查、设备枚举与数据搬运的完整套路。检查 Cuda 是否可用 import torch.cuda torch.cuda.is_available() Truetorch.cuda.is_available()返回布尔值是判断当前环境能否使用 GPU 的标准入口。列出 GPU 设备import torch device_count torch.cuda.device_count() print(CUDA 设备) for i in range(device_count): device_name torch.cuda.get_device_name(i) total_memory torch.cuda.get_device_properties(i).total_memory / (1024 ** 3) print(f├── 设备 {i}: {device_name}, 容量: {total_memory:.2f} GiB) print(└── (结束))torch.cuda.device_count()返回 GPU 数量get_device_name(i)返回设备名称get_device_properties(i)返回设备属性其中total_memory以字节计示例中除以1024 ** 3换算为 GiB。将模型、张量在 GPU 和内存之间搬运import torch # 将 0 替换为您的 GPU 设备索引或者直接使用 cuda device fcuda:0 # 移动到GPU tensor_m torch.tensor([1, 2, 3]) tensor_g tensor_m.to(device) model_m torch.nn.Linear(1, 1) model_g model_m.to(device) # 向后移动 tensor_m tensor_g.cpu() model_m model_g.cpu().to(device)是张量与模型统一的设备迁移接口device可以是cuda:0、cuda或cpu反向迁移则使用.cpu()。模型nn.Module与张量Tensor均可通过该方法在 GPU 与内存之间搬运。Imports常用模块导入速查备忘清单按用途划分了常用导入语句是搭建训练脚本时最常复制的部分。一般导入# 根包 import torch数据集表示和加载from torch.utils.data import Dataset, DataLoaderDataset用于自定义数据集类DataLoader负责批量加载、打乱与多进程取数。神经网络 API# 计算图 import torch.autograd as autograd # 计算图中的张量节点 from torch import Tensor神经网络import torch.nn as nn # 层、激活等 import torch.nn.functional as F # 优化器例如 梯度下降、ADAM等 import torch.optim as optimtorch.nn提供层与损失函数等模块化组件torch.nn.functional提供无状态的功能函数如F.relu、F.conv2dtorch.optim提供优化器如 SGD、Adam。混合前端装饰器和跟踪 jitfrom torch.jit import script, traceTorchscript 和 JITtorch.jit.trace()使用你的模块或函数和一个例子数据输入并追溯计算步骤记录数据在模型中前进时遇到的情况scriptscript装饰器用于指示被跟踪代码中的数据相关控制流如if、循环等依赖实际数据的逻辑分支。ONNX 导出与检查torch.onnx.export(model, dummy data, xxxx.proto) # 导出 ONNX 格式 # 使用经过训练的模型dummy # 数据和所需的文件名加载 ONNX 模型model onnx.load(alexnet.proto)检查模型结构是否良好onnx.checker.check_model(model)打印一个人类可读的图的表示onnx.helper.printable_graph(model.graph)torch.onnx.export接收「训练好的模型 哑元输入dummy data 目标文件名」将模型导出为 ONNX 格式示例中的xxxx.proto指代导出文件名如alexnet.proto随后可用onnx.load加载、onnx.checker.check_model校验、onnx.helper.printable_graph输出可读的计算图。Vision 视觉模块# 视觉数据集架构 变换 from torchvision import datasets, models, transforms # 组合转换 import torchvision.transforms as transforms分布式训练# 分布式通信 import torch.distributed as dist # 内存共享进程 from torch.multiprocessing import Process相关链接Pytorch 官网pytorch.orgPytorch 官方备忘清单pytorch.org如何在仓库中使用本速查表本清单位于仓库 docs/pytorch.md并在首页 README.md 的「编程」分类下以卡片形式展示配有 assets/pytorch.svg 图标。仓库通过refs-cli将 Markdown 编译为静态 HTML相关构建脚本定义在 package.json 中如果你希望本地预览或自定义自己的速查清单可参照 docs/quickreference.md 中的排版规范与编译流程运行npm install npm run build生成页面或使用npm start监听 Markdown 变更实时编译。赞分享文档知识库教程开发工具【免费下载链接】reference为开发人员分享快速参考备忘清单(速查表)项目地址https://gitcode.com/jaywcjlove/reference点击查看免费下载相关推荐Telegraf 外部插件详解execd 三种接入方式、Go Shim 外置流程与社区插件生态Telegraf 外部插件详解execd 三种接入方式、Go Shim 外置流程与社区插件生态 本文围绕 Telegraf 的外部插件机制展开讲解外部插件的文档知识库教程开发工具Pytorch 备忘清单从张量基础语法到 CUDA 与模型导出的开发速查Pytorch 备忘清单从张量基础语法到 CUDA 与模型导出的开发速查 本文是基于本仓库 docs/pytorch.md https://link.gitc文档教程JavaScript 备忘清单Quick Reference 仓库中的完整语法速查与实战指南JavaScript 备忘清单Quick Reference 仓库中的完整语法速查与实战指南 本文是基于 Quick Referencereferen/re文档教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。