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 组织结构,你就具备了搭建与训练模型的完整基础。
参考与延伸阅读
- PyTorch 官方入门教程。已核验。https://pytorch.org/tutorials/beginner/basics/intro.html
- PyTorch 自动求导文档。已核验。https://pytorch.org/docs/stable/autograd.html
本文累计阅读 — 次