PyTorch 简介

一、什么是 PyTorch?

PyTorch 是一个由 Facebook(现 Meta)人工智能研究院(FAIR)于 2016 年发布的 开源深度学习框架,基于 Python 语言开发,主要用于神经网络建模、训练和部署。

PyTorch 以其灵活、易用、调试友好的特性,迅速成为科研界最受欢迎的深度学习工具之一,同时也广泛应用于工业界的模型开发与部署。

二、PyTorch 的核心特点

特点 说明
动态图机制(Dynamic Computational Graph) 支持动态图(define-by-run),代码执行即计算图构建,调试灵活。
紧密集成 Python / NumPy Tensor 操作风格与 NumPy 类似,便于上手与数据转换。
强大的 GPU 支持 可自动使用 CUDA 加速,训练速度快。
模块化结构清晰 网络层、损失函数、优化器等模块分离,易于扩展和自定义。
社区活跃、生态丰富 与 Hugging Face、TorchVision、PyTorch Geometric 等工具链高度兼容。

三、PyTorch 的基本组件结构

模块 功能
torch.Tensor 核心数据结构,支持自动求导和 GPU 计算
torch.nn 构建神经网络模型的模块
torch.optim 各类优化器(如 SGD、Adam)
torch.utils.data 数据加载(Dataset + DataLoader)
torch.autograd 自动求导系统,支持反向传播

四、PyTorch 简单示例代码


import torch
import torch.nn as nn
import torch.optim as optim

# 定义一个简单的网络
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear = nn.Linear(784, 10)  # 输入784维,输出10类

    def forward(self, x):
        return self.linear(x)

# 实例化模型、损失函数、优化器
model = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 模拟训练一次
inputs = torch.randn(64, 784)  # batch_size = 64
labels = torch.randint(0, 10, (64,))
outputs = model(inputs)
loss = criterion(outputs, labels)

loss.backward()  # 反向传播
optimizer.step()  # 更新参数

vs TensorFlow

维度 PyTorch TensorFlow + Keras
计算图类型 动态图(更灵活) 静态图(效率高)+动态图支持
使用难度 上手快,调试方便 初学者友好(Keras封装)
社区偏好 研究型、论文复现偏多 工业部署更成熟
API 风格 类 Python / NumPy 风格 类 Keras / 结构化风格
主流支持 Meta, Hugging Face 等 Google, TensorFlow Hub 等

PyTorch 的生态扩展

模块/库 用途
TorchVision 图像数据集、模型、预处理工具
TorchText 文本处理工具包
TorchAudio 语音信号处理工具
PyTorch Lightning 训练流程自动化(封装训练循环)
Hugging Face Transformers 大语言模型快速加载与训练
PyTorch Geometric (PyG) 图神经网络支持

学习资源

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容