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,一经查实,立即删除!

相关文章

C# Dynamic关键字

一、引言:开启动态编程之门 在 C# 的编程世界里,长久以来我们习惯了静态类型语言带来的严谨与稳定。在传统的 C# 编程中,变量的类型在编译时就已经确定,这就像是给每个变量贴上了一个固定的标签,在整个代码执行过程中…

自定义数据集,使用 PyTorch 框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

在本文中,我们将展示如何使用 NumPy 创建自定义数据集,利用 PyTorch 实现一个简单的逻辑回归模型,并在训练完成后保存该模型,最后加载模型并用它进行预测。 1. 创建自定义数据集 首先,我们使用 NumPy 创建一个简单的…

​ONES 春节假期服务通知

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

python:洛伦兹变换

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

Solon Cloud Gateway 开发:Route 的配置与注册方式

路由的配置与注册有三种方式:手动配置;自动发现配置;代码注册。 1、手动配置方式 solon.cloud.gateway:routes: #!必选- id: demotarget: "http://localhost:8080" # 或 "lb://user-service"predicates: #?可选- &quo…

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

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

Julia DataFrames.jl:深入理解和使用

随着数据科学和机器学习的发展,数据框架广泛应用于数据处理与分析工作中。在 Julia 语言中,DataFrames.jl 是一个强大且灵活的数据框库,为数据操作提供了丰富的功能。本文旨在系统地介绍 DataFrames.jl 的基础概念、使用方法、常见实践和最佳…

Kotlin判空辅助工具

1)?.操作符 //执行逻辑 if (person ! null) {person.doSomething() } //表达式 person?.doSomething() 2)?:操作符 //执行逻辑 val c if (a ! null) {a } else {b } //表达式 val c a ?: b 3)!!表达式 var message: String? &qu…

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个基本…

Vue.js组件开发-实现下载时暂停恢复下载

在 Vue 中实现下载时暂停和恢复功能,通常可以借助 XMLHttpRequest 对象来控制下载过程。XMLHttpRequest 允许在下载过程中暂停和继续请求。 实现步骤 创建 Vue 组件:创建一个 Vue 组件,包含下载、暂停和恢复按钮。初始化 XMLHttpRequest 对…

【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案

今天,我们将深入 RAG 流程的最后一步,也是至关重要的一步:回答生成 (Answer Generation)。 在这一步,LLM 将融合用户问题和检索到的文档片段,生成最终的答案。这个过程不仅仅是简单的文本拼接,更需要 LLM …

赚钱的究极认识

1、赚钱的本质是提供了价值或者价值想象 价值: 比如小米手机靠什么?“性价比”,什么饥饿营销,创新,用户参与,生态供应链,品牌这些不能说不重要,但是加在一起都没有“性价比”这3字重…

世上本没有路,只有“场”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来实现延迟功能,因为它们的插入和…