PyTorch 基础:张量与自动求导

PyTorch 是当今最主流的深度学习框架之一。它的核心是张量(tensor)与自动求导(autograd):张量承载数据,自动求导让梯度计算对用户透明,从而把建模简化为「搭网络、算损失、反向传播」三步。

张量是什么

张量是 NumPy 数组的升级版,可在 GPU 上加速,并记录计算图以支持求导。标量是零维张量,向量是一维,图像批次通常是四维。

import torch

x = torch.tensor([[1.0, 2.0], [3.0, 4.0]], requires_grad=True)
y = x.pow(2).sum()
y.backward()             # 自动求导
print(x.grad)            # 每个元素的梯度

自动求导原理

当你设置 requires_grad=True 并对张量做运算时,PyTorch 会动态构建计算图。调用 backward() 后,它沿图反向传播,自动算出每个叶子张量的梯度,省去手写链式法则。

用 nn 模块搭网络

torch.nn 提供层、激活与损失函数,nn.Sequential 或自定义模块让结构清晰,Optimizer 负责按梯度更新参数。

import torch.nn as nn

model = nn.Sequential(
    nn.Linear(4, 8),
    nn.ReLU(),
    nn.Linear(8, 1),
)

注意点

训练前用 model.train(),评估时切到 model.eval() 以控制 dropout 与归一化行为。梯度默认会累积,每个 batch 前记得调用 optimizer.zero_grad() 清空。

小结

PyTorch 把深度学习拆成张量、自动求导与神经网络模块三块。理解张量承载数据、autograd 自动求梯度、nn 组织结构,你就具备了搭建与训练模型的完整基础。

参考与延伸阅读

本文累计阅读