PyTorch API 详细中文文档,基于PyTorch2.5


PyTorch API 详细中文文档

按模块分类,涵盖核心函数与用法示例


目录

  1. 张量操作 (Tensor Operations)
  2. 数学运算 (Math Operations)
  3. 自动求导 (Autograd)
  4. 神经网络模块 (torch.nn)
  5. 优化器 (torch.optim)
  6. 数据加载与处理 (torch.utils.data)
  7. 设备管理 (Device Management)
  8. 模型保存与加载
  9. 分布式训练 (Distributed Training)
  10. 实用工具函数

1. 张量操作 (Tensor Operations)

1.1 张量创建
函数描述示例
torch.tensor(data, dtype, device)从数据创建张量torch.tensor([1,2,3], dtype=torch.float32)
torch.zeros(shape)创建全零张量torch.zeros(2,3)
torch.ones(shape)创建全一张量torch.ones(5)
torch.rand(shape)均匀分布随机张量torch.rand(3,3)
torch.randn(shape)标准正态分布张量torch.randn(4,4)
torch.arange(start, end, step)创建等差序列torch.arange(0, 10, 2)[0,2,4,6,8]
torch.linspace(start, end, steps)线性间隔序列torch.linspace(0, 1, 5)[0, 0.25, 0.5, 0.75, 1]
1.2 张量属性
属性/方法描述示例
.shape张量维度x = torch.rand(2,3); x.shape → torch.Size([2,3])
.dtype数据类型x.dtype → torch.float32
.device所在设备x.device → device(type='cpu')
.requires_grad是否追踪梯度x.requires_grad = True
1.3 张量变形
函数描述示例
.view(shape)调整形状(不复制数据)x = torch.arange(6); x.view(2,3)
.reshape(shape)类似 view,但自动处理内存连续性x.reshape(3,2)
.permute(dims)调整维度顺序x = torch.rand(2,3,4); x.permute(1,2,0)
.squeeze(dim)去除大小为1的维度x = torch.rand(1,3); x.squeeze(0)shape [3]
.unsqueeze(dim)添加大小为1的维度x = torch.rand(3); x.unsqueeze(0)shape [1,3]

2. 数学运算 (Math Operations)

2.1 逐元素运算
函数描述示例
torch.add(x, y)加法torch.add(x, y)x + y
torch.mul(x, y)乘法torch.mul(x, y)x * y
torch.exp(x)指数运算torch.exp(torch.tensor([1.0]))[2.7183]
torch.log(x)自然对数torch.log(torch.exp(tensor([2.0])))[2.0]
torch.clamp(x, min, max)限制值范围torch.clamp(x, min=0, max=1)
2.2 矩阵运算
函数描述示例
torch.matmul(x, y)矩阵乘法x = torch.rand(2,3); y = torch.rand(3,4); torch.matmul(x, y)
torch.inverse(x)矩阵求逆x = torch.rand(3,3); inv_x = torch.inverse(x)
torch.eig(x)特征值分解eigenvalues, eigenvectors = torch.eig(x)
2.3 统计运算
函数描述示例
torch.sum(x, dim)沿维度求和x = torch.rand(2,3); torch.sum(x, dim=1)
torch.mean(x, dim)沿维度求均值torch.mean(x, dim=0)
torch.max(x, dim)沿维度求最大值values, indices = torch.max(x, dim=1)
torch.argmax(x, dim)最大值索引indices = torch.argmax(x, dim=1)

3. 自动求导 (Autograd)

3.1 梯度计算
函数/属性描述示例
x.backward()反向传播计算梯度x = torch.tensor(2.0, requires_grad=True); y = x**2; y.backward()
x.grad查看梯度值x.grad4.0(若 y = x²
torch.no_grad()禁用梯度追踪with torch.no_grad(): y = x * 2
detach()分离张量(不追踪梯度)y = x.detach()
3.2 梯度控制
函数描述
x.retain_grad()保留非叶子节点的梯度
torch.autograd.grad(outputs, inputs)手动计算梯度

示例

x = torch.tensor(3.0, requires_grad=True)  
y = x**3 + 2*x  
dy_dx = torch.autograd.grad(y, x)  # 返回 (torch.tensor(29.0),)  

4. 神经网络模块 (torch.nn)

4.1 层定义
描述示例
nn.Linear(in_features, out_features)全连接层layer = nn.Linear(784, 256)
nn.Conv2d(in_channels, out_channels, kernel_size)卷积层conv = nn.Conv2d(3, 16, kernel_size=3)
nn.LSTM(input_size, hidden_size)LSTM 层lstm = nn.LSTM(100, 50)
nn.Dropout(p=0.5)Dropout 层dropout = nn.Dropout(0.2)
4.2 激活函数
函数描述示例
nn.ReLU()ReLU 激活F.relu(x)nn.ReLU()(x)
nn.Sigmoid()Sigmoid 函数torch.sigmoid(x)
nn.Softmax(dim)Softmax 归一化F.softmax(x, dim=1)
4.3 损失函数
描述示例
nn.MSELoss()均方误差loss_fn = nn.MSELoss()
nn.CrossEntropyLoss()交叉熵损失loss = loss_fn(outputs, labels)
nn.BCELoss()二分类交叉熵loss_fn = nn.BCELoss()

5. 优化器 (torch.optim)

5.1 优化器定义
描述示例
optim.SGD(params, lr)随机梯度下降optimizer = optim.SGD(model.parameters(), lr=0.01)
optim.Adam(params, lr)Adam 优化器optimizer = optim.Adam(model.parameters(), lr=0.001)
optim.RMSprop(params, lr)RMSprop 优化器optimizer = optim.RMSprop(params, lr=0.01)
5.2 优化器方法
方法描述示例
optimizer.zero_grad()清空梯度optimizer.zero_grad()
optimizer.step()更新参数loss.backward(); optimizer.step()
optimizer.state_dict()获取优化器状态state = optimizer.state_dict()

6. 数据加载与处理 (torch.utils.data)

6.1 数据集类
类/函数描述示例
Dataset自定义数据集基类继承并实现 __len____getitem__
DataLoader(dataset, batch_size, shuffle)数据加载器loader = DataLoader(dataset, batch_size=64, shuffle=True)

自定义数据集示例

class MyDataset(Dataset):  def __init__(self, data, labels):  self.data = data  self.labels = labels  def __len__(self):  return len(self.data)  def __getitem__(self, idx):  return self.data[idx], self.labels[idx]  
6.2 数据预处理 (TorchVision)
from torchvision import transforms  transform = transforms.Compose([  transforms.Resize(256),          # 调整图像大小  transforms.ToTensor(),           # 转为张量  transforms.Normalize(mean=[0.5], std=[0.5])  # 标准化  
])  

7. 设备管理 (Device Management)

7.1 设备切换
函数/方法描述示例
.to(device)移动张量/模型到设备x = x.to('cuda:0')
torch.cuda.is_available()检查 GPU 是否可用if torch.cuda.is_available(): ...
torch.cuda.empty_cache()清空 GPU 缓存torch.cuda.empty_cache()

8. 模型保存与加载

函数描述示例
torch.save(obj, path)保存对象(模型/参数)torch.save(model.state_dict(), 'model.pth')
torch.load(path)加载对象model.load_state_dict(torch.load('model.pth'))
model.state_dict()获取模型参数字典params = model.state_dict()

9. 分布式训练 (Distributed Training)

函数/类描述示例
nn.DataParallel(model)单机多卡并行model = nn.DataParallel(model)
torch.distributed.init_process_group()初始化分布式训练需配合多进程使用

10. 实用工具函数

函数描述示例
torch.cat(tensors, dim)沿维度拼接张量torch.cat([x, y], dim=0)
torch.stack(tensors, dim)堆叠张量(新建维度)torch.stack([x, y], dim=1)
torch.split(tensor, split_size, dim)分割张量chunks = torch.split(x, 2, dim=0)

常见问题与技巧

  1. GPU 内存不足

    • 使用 batch_size 较小的值
    • 启用混合精度训练 (torch.cuda.amp)
    • 使用 torch.utils.checkpoint 节省内存
  2. 梯度爆炸/消失

    • 使用梯度裁剪:torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
    • 调整权重初始化方法
  3. 模型推理模式

    model.eval()  # 关闭 Dropout 和 BatchNorm 的随机性  
    with torch.no_grad():  outputs = model(inputs)  
    

文档说明

  • 本文档基于 PyTorch 2.5 编写,部分 API 可能不兼容旧版本。
  • 更详细的参数说明请参考 PyTorch 官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​ONES 春节假期服务通知

ONES 春节假期服务通知 灵蛇贺岁,瑞气盈门。感谢大家一直以来对 ONES 的认可与支持,祝您春节快乐! 「2025年1月28日 ~ 2025年2月4日」春节假期期间,我们的值班人员将为您提供如下服务 : 紧急问题 若有紧急问…

python:洛伦兹变换

洛伦兹变换(Lorentz transformations)是相对论中的一个重要概念,特别是在讨论时空的变换时非常重要。在四维时空的背景下,洛伦兹变换描述了在不同惯性参考系之间如何变换时间和空间坐标。在狭义相对论中,洛伦兹变换通常…

LangChain:使用表达式语言优化提示词链

在 LangChain 里,LCEL 即 LangChain Expression Language(LangChain 表达式语言),本文为你详细介绍它的定义、作用、优势并举例说明,从简单示例到复杂组合示例,让你快速掌握LCEL表达式语言使用技巧。 定义 …

unity学习20:time相关基础 Time.time 和 Time.deltaTime

目录 1 unity里的几种基本时间 1.1 time 相关测试脚本 1.2 游戏开始到现在所用的时间 Time.time 1.3 时间缩放值 Time.timeScale 1.4 固定时间间隔 Time.fixedDeltaTime 1.5 两次响应时间之间的间隔:Time.deltaTime 1.6 对应测试代码 1.7 需要关注的2个基本…

世上本没有路,只有“场”et“Bravo”

楔子:电气本科“工程电磁场”电气研究生课程“高等电磁场分析”和“电磁兼容”自学”天线“、“通信原理”、“射频电路”、“微波理论”等课程 文章目录 前言零、学习历程一、Maxwells equations1.James Clerk Maxwell2.自由空间中传播的电磁波3.边界条件和有限时域…

electron typescript运行并设置eslint检测

目录 一、初始化package.json 二、安装依赖 三、项目结构 四、配置启动项 五、补充:ts转js别名问题 一、初始化package.json 我的:这里的"main"没太大影响,看后面的步骤。 {"name": "xloda-cloud-ui-pc"…

学习数据结构(3)顺序表

1.动态顺序表的实现 (1)初始化 (2)扩容 (3)头部插入 (4)尾部插入 (5)头部删除 (这里注意要保证有效数据个数不为0) (6&a…

PydanticAI应用实战

PydanticAI 是一个 Python Agent 框架,旨在简化使用生成式 AI 构建生产级应用程序的过程。 它由 Pydantic 团队构建,该团队也开发了 Pydantic —— 一个在许多 Python LLM 生态系统中广泛使用的验证库。PydanticAI 的目标是为生成式 AI 应用开发带来类似 FastAPI 的体验,它基…

deepseek R1的确不错,特别是深度思考模式

deepseek R1的确不错,特别是深度思考模式,每次都能自我反省改进。比如我让 它写文案: 【赛博朋克版程序员新春密码——2025我们来破局】 亲爱的代码骑士们: 当CtrlS的肌肉记忆遇上抢票插件,当Spring Boot的…

macbook安装go语言

通过brew来安装go语言 使用brew命令时,一般都会通过brew search看看有哪些版本 brew search go执行后,返回了一堆内容,最下方展示 If you meant "go" specifically: It was migrated from homebrew/cask to homebrew/core. Cas…

若依基本使用及改造记录

若依框架想必大家都了解得不少,不可否认这是一款及其简便易用的框架。 在某种情况下(比如私活)使用起来可谓是快得一匹。 在这里小兵结合自身实际使用情况,记录一下我对若依框架的使用和改造情况。 一、源码下载 前往码云进行…

Kafka 深入服务端 — 时间轮

Kafka中存在大量的延迟操作,比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器,来完成这些延迟操作。 1 时间轮 Kafka没有使用基于JDK自带的Timer或DelayQueue来实现延迟功能,因为它们的插入和…

数据分析系列--②RapidMiner导入数据和存储过程

一、下载数据 点击下载AssociationAnalysisData.xlsx数据集 二、导入数据 1. 在本地计算机中创建3个文件夹 2. 从本地选择.csv或.xlsx 三、界面说明 四、存储过程 将刚刚新建的过程存储到本地 Congratulations, you are done.

HarmonyOS简介:HarmonyOS核心技术理念

核心理念 一次开发、多端部署可分可合、自由流转统一生态、原生智能 一次开发、多端部署 可分可合 自由流转 自由流转可分为跨端迁移和多端协同两种情况 统一生态 支持业界主流跨平台开发框架,通过多层次的开放能力提供统一接入标准,实现三方框架快速…

ES6语法

一、Let、const、var变量定义 1.let 声明的变量有严格局部作用域 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

书生大模型实战营3

文章目录 L0——入门岛git基础Git 是什么&#xff1f;Git 中的一些基本概念工作区、暂存区和 Git 仓库区文件状态分支主要功能 Git 平台介绍GitHubGitLabGitee Git 下载配置验证下载 Git配置 Git验证 Git配置 Git常用操作Git简易入门四部曲Git其他指令 闯关任务任务1: 破冰活动…

前端——js高级25.1.27

复习&#xff1a;对象 问题一&#xff1a; 多个数据的封装提 一个对象对应现实中的一个事物 问题二&#xff1a; 统一管理多个数据 问题三&#xff1a; 属性&#xff1a;组成&#xff1a;属性名属性值 &#xff08;属性名为字符串&#xff0c;属性值任意&#xff09; 方…

[创业之路-270]:《向流程设计要效率》-2-企业流程架构模式 POS架构(规划、业务运营、支撑)、OES架构(业务运营、使能、支撑)

目录 一、POS架构 二、OES架构 三、POS架构与OES架构的差异 四、各自的典型示例 POS架构典型示例 OES架构典型示例 示例分析 五、各自的典型企业 POS架构典型企业 OES架构典型企业 分析 六、各自典型的流程 POS架构的典型流程 OES架构的典型流程 企业流程架构模式…

计算机的错误计算(二百二十二)

摘要 利用大模型化简计算 实验表明&#xff0c;虽然结果正确&#xff0c;但是&#xff0c;大模型既绕了弯路&#xff0c;又有数值计算错误。 与前面相同&#xff0c;再利用同一个算式看看另外一个大模型的化简与计算能力。 例1. 化简计算摘要中算式。 下面是与一个大模型的…

【现代深度学习技术】深度学习计算 | 参数管理

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…