Python 第三方库:PyTorch(动态计算图的深度学习框架)

PyTorch 是由 Facebook AI Research(FAIR)团队于 2016 年开源的深度学习框架。

它以动态图(Dynamic Computation Graph)、易用性和科研友好性著称,广泛应用于学术研究和工业界的深度学习任务。

PyTorch 提供了与 NumPy 类似的张量操作接口,同时具备自动求导功能,支持 GPU 加速,并能与 Python 生态(NumPy、SciPy、scikit-learn 等)紧密结合。

安装:CPU 版本

nginx 复制代码
pip install torch torchvision torchaudio

GPU 版本(需 CUDA 环境):

官方推荐使用官网安装指令生成器:PyTorch Get Started。

示例(CUDA 11.8):

perl 复制代码
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

常见应用场景:

(1)学术研究:灵活的动态图机制适合快速试验新模型。

(2)计算机视觉:通过 torchvision 提供丰富的数据集与预训练模型。

(3)自然语言处理:HuggingFace Transformers 等主流 NLP 库均基于 PyTorch。

(4)强化学习:易于构建复杂的交互式训练流程。

(5)工业部署:通过 TorchScript、ONNX、LibTorch 可扩展到生产环境。

◆ ◆

核心概念

1、张量(Tensor)

PyTorch 的核心数据结构,类似 NumPy 数组,但支持 GPU 加速。

2、动态计算图(Define-by-Run)

与 TensorFlow 1.x 的静态图不同,PyTorch 在运行时构建计算图,更加直观灵活。

3、自动求导(Autograd)

torch.autograd 自动追踪张量操作,支持梯度反向传播。

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

提供丰富的层、损失函数和优化器,便于快速构建复杂模型。

5、数据加载(torch.utils.data)

提供 Dataset 和 DataLoader 抽象,支持批处理、打乱和并行加载。

6、部署支持

TorchScript:将动态图转换为可优化的静态图。

ONNX:跨框架导出与部署。

◆ ◆

应用举例

例 1:张量运算

go 复制代码
import torch
x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)y = torch.tensor([[5, 6], [7, 8]], dtype=torch.float32)
print(torch.matmul(x, y))  # 矩阵乘法

例 2:自动求导

makefile 复制代码
import torch
x = torch.ones(2, 2, requires_grad=True)y = x + 2z = y * y * 3out = z.mean()
out.backward()  # 反向传播print(x.grad)   # 梯度

例 3:定义神经网络

python 复制代码
import torchimport torch.nn as nnimport torch.nn.functional as F
class Net(nn.Module):    def __init__(self):        super(Net, self).__init__()        self.fc1 = nn.Linear(784, 128)        self.fc2 = nn.Linear(128, 10)
    def forward(self, x):        x = F.relu(self.fc1(x))        return self.fc2(x)
net = Net()print(net)

例 4:训练循环(以 MNIST 为例)

python 复制代码
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms
# 数据预处理transform = transforms.Compose([transforms.ToTensor()])
train_loader = torch.utils.data.DataLoader(    datasets.MNIST('.', train=True, download=True, transform=transform),    batch_size=64, shuffle=True)
# 模型与优化器model = Net()optimizer = optim.Adam(model.parameters(), lr=0.001)criterion = nn.CrossEntropyLoss()
# 训练一个 epochfor data, target in train_loader:    optimizer.zero_grad()    output = model(data.view(-1, 784))    loss = criterion(output, target)    loss.backward()    optimizer.step()
print("训练完成")

例 5:保存与加载模型

makefile 复制代码
# 保存参数torch.save(model.state_dict(), "model.pth")
# 加载参数new_model = Net()new_model.load_state_dict(torch.load("model.pth"))new_model.eval()

例 6:GPU 加速

makefile 复制代码
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model.to(device)

◆ ◆

常用模块速览

torch.Tensor

张量数据结构。

torch.autograd

自动求导系统。

torch.nn

神经网络模块。

torch.optim

优化器(SGD、Adam 等)。

torchvision

计算机视觉工具包。

torch.utils.data

数据加载工具。

torch.jit

TorchScript(部署)。

torch.onnx

ONNX 导出。

📘 小结

PyTorch 是动态计算图驱动的深度学习框架,以灵活性和易用性著称。

它不仅在学术研究中占据主导地位,也通过 TorchScript、ONNX 等工具进入工业部署领域。

凭借强大的生态系统(如 torchvision、HuggingFace Transformers、PyTorch Lightning),PyTorch 已成为科研与工程并重的主流 AI 框架。

"点赞有美意,赞赏是鼓励"

相关推荐
Code88482 小时前
观察Springboot AI-Function Tools 执行过程
人工智能·spring boot·后端
kyle-fang2 小时前
pytorch-张量转换
人工智能·pytorch·python
甄心爱学习2 小时前
计算机视觉11-相机模型与多视几何
人工智能·数码相机·计算机视觉
qunshankeji2 小时前
草莓病害智能识别与分类_Cascade-RCNN_HRNetV2p-W18-20e_COCO实现
人工智能·数据挖掘
Boop_wu2 小时前
[Java EE] 多线程 -- 初阶(3)
java·开发语言
CloudWeGo2 小时前
用 Eino ADK 构建你的第一个 AI 智能体:从 Excel Agent 实战开始
人工智能·开源·github
2301_795167202 小时前
玩转Rust高级应用 如何理解 Rust 实现免疫数据竞争的关键是Send 和 Sync 这两个 trait
开发语言·算法·rust
Blossom.1182 小时前
AI Agent记忆系统深度实现:从短期记忆到长期人格的演进
人工智能·python·深度学习·算法·决策树·机器学习·copilot