大数跨境

快速入门Pytorch

快速入门Pytorch AI科技在线
2026-06-03
7
导读:快速入门Pytorch

来源:永远别说永远


一、PyTorch 简介

PyTorch 是由 Meta(原 Facebook)AI 研究院开发的开源深度学习框架,基于 Python 实现,具有动态计算图自动求导机制的特性。
其核心目标是:在保持灵活性的同时,实现高性能的深度学习建模与训练。

PyTorch 的底层采用 C++ 实现高效计算内核,上层通过 Python 提供接口封装。
相较于 TensorFlow 的静态图机制,PyTorch 的动态图设计使得模型定义与调试更加直观。


二、NumPy 与 PyTorch 的关系

如果读者已经具备 NumPy 基础,那么学习 PyTorch 会非常顺利。
两者在语法和操作上高度相似,主要区别在于以下几点:

功能
NumPy
PyTorch
数据类型
ndarray torch.Tensor
GPU 加速
不支持
支持(通过 cuda()
自动求导
不支持
支持(requires_grad=True
深度学习组件
内置于 torch.nntorch.optim 等模块

示例对比:

# NumPy
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.ones((2, 2))
print(a + b)

# PyTorch
import torch
x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)
y = torch.ones((2, 2))
print(x + y)

结果完全一致,但 PyTorch 的张量 Tensor 还可以支持 GPU 加速与梯度计算:

x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32, requires_grad=True)
y = x ** 2
y.sum().backward()     # 自动求导
print(x.grad)

三、张量(Tensor)基础

张量是 PyTorch 的核心数据结构。
其可以看作是多维数组,支持矩阵运算、索引、切片、广播等操作。

常用创建方法:

torch.tensor([[1,2],[3,4]])     # 直接定义
torch.zeros((3,3))              # 全零张量
torch.ones((2,4))               # 全一张量
torch.rand((2,3))               # 随机张量
torch.arange(0,10,2)            # 序列张量

重要属性与方法:

属性/方法
含义
.shape
张量形状
.dtype
数据类型
.device
计算设备(CPU/GPU)
.requires_grad
是否参与自动求导
.numpy()
转换为 NumPy 数组
.to(device)
将张量移动到指定设备

四、PyTorch 框架结构

PyTorch 由多个模块组成,各自承担不同功能,整体结构清晰而模块化。
理解这些模块是掌握 PyTorch 的关键。

模块
功能
示例
torch
张量运算与自动求导
torch.tensor()
torch.matmul()
torch.nn
神经网络组件定义
nn.Linear
nn.Conv2d
torch.optim
优化器实现
optim.Adam
optim.SGD
torch.utils.data
数据加载与批处理
DataLoader
Dataset
torchvision/torchtext/torchaudio
专用任务工具包
图像/文本/语音
torch.jit
模型加速与部署
torch.jit.trace
torch.jit.save

下面分别说明主要模块:


1. torch —— 底层核心

包含张量运算、线性代数、随机生成与自动求导系统。
PyTorch 的一切运算都以 Tensor 为基础,计算图由系统自动维护。


2. torch.nn —— 神经网络模块

用于定义和管理神经网络结构。所有网络层都继承自 nn.Module
常用组件:

类别
示例
功能
网络层
nn.Linear
nn.Conv2d
线性与卷积运算
激活函数
nn.ReLU
nn.Sigmoid
非线性映射
正则化
nn.Dropout
nn.BatchNorm2d
提升泛化能力
结构容器
nn.Sequential
nn.ModuleList
模型组合
损失函数
nn.CrossEntropyLoss
nn.MSELoss
计算误差

3. torch.optim —— 优化器模块

负责模型参数的更新。
常见算法包括 SGD、Adam、RMSprop 等。

示例:

optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
loss.backward()
optimizer.step()
optimizer.zero_grad()

4. torch.utils.data —— 数据接口

提供高效的数据加载与批处理机制。
核心类:

  • Dataset:自定义数据集读取方式

  • DataLoader:支持批量读取与多线程加载

loader = DataLoader(dataset, batch_size=64, shuffle=True)

5. torchvision / torchaudio / torchtext

PyTorch 官方任务扩展库,提供常用数据集与预训练模型,便于快速实验。


6. torch.jit —— 模型加速与部署

用于将动态模型转换为静态图形式,便于优化与跨平台部署。


五、PyTorch 编程逻辑:搭建式思维

深度学习框架的核心思想是“模块化组合”。
PyTorch 已将所有关键组件(网络层、优化器、损失函数、激活函数等)封装完毕,用户只需按照计算逻辑将它们合理组合。

一个典型的训练流程如下:

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader

# 1. 定义模型
class MLP(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(784, 256),
            nn.ReLU(),
            nn.Linear(256, 10)
        )
    def forward(self, x):
        return self.net(x)

# 2. 初始化
model = MLP()
optimizer = optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.CrossEntropyLoss()

# 3. 训练循环
for x, y in DataLoader(dataset, batch_size=64):
    optimizer.zero_grad()
    preds = model(x)
    loss = criterion(preds, y)
    loss.backward()
    optimizer.step()

这体现了 PyTorch 的设计哲学:

所有深度学习过程都可在 torch 中找到对应模块,用户只需进行“积木式组合”。


六、常用函数与操作速查表

类别
常用函数
说明
张量创建
torch.tensor
torch.zerostorch.onestorch.rand
创建张量
张量操作
torch.cat
torch.stacktorch.reshapetorch.transpose
张量变换
数学运算
torch.mean
torch.sumtorch.maxtorch.matmul
基本计算
激活函数
F.relu
F.sigmoidF.softmaxF.tanh
非线性映射
损失函数
nn.MSELoss
nn.CrossEntropyLoss
模型误差计算
优化器
optim.SGD
optim.Adamoptim.RMSprop
参数更新
数据工具
DataLoader
Dataset
数据加载

七、总结

PyTorch 的学习关键在于理解其结构逻辑:

张量(Tensor)是基础,自动求导是核心,nn 模块是灵魂,优化器与数据接口是驱动。

一旦掌握了这些核心概念,构建任何深度学习模型——无论是 CNN、RNN、Transformer 还是自定义结构——都将变得系统且高效。

本文仅作学术信息分享,如有侵犯请联系删除

【声明】内容源于网络
0
0
AI科技在线
1234
内容 1417
粉丝 0
AI科技在线 1234
总阅读16.9k
粉丝0
内容1.4k