从理论到代码:PyTorch实战经典CNN架构解析
记得第一次看完吴恩达教授的《卷积神经网络》课程时,那种既兴奋又困惑的感觉至今难忘——屏幕上精美的卷积动图让人眼前一亮,但回到自己的Jupyter笔记本前,却不知如何将这些数学公式变成可运行的代码。这就像学完了汽车原理却找不到方向盘在哪。本文将用PyTorch这座"桥梁",带你跨越理论与实践的鸿沟,亲手搭建CNN发展史上两座里程碑:LeNet-5和AlexNet。
1. 环境配置与PyTorch基础
工欲善其事,必先利其器。在开始构建神经网络之前,我们需要准备好开发环境。推荐使用Python 3.8+和PyTorch 2.0+版本,这两个版本的组合在稳定性和功能支持上达到了最佳平衡。
安装PyTorch非常简单,只需运行:
bash复制pip install torch torchvision torchaudio
PyTorch的核心数据结构是Tensor,它类似于NumPy的ndarray,但具有GPU加速功能。下面是一个快速对比:
| 特性 | NumPy ndarray | PyTorch Tensor |
|---|---|---|
| 硬件加速 | 仅CPU | CPU/GPU |
| 自动微分 | 不支持 | 支持 |
| 广播机制 | 支持 | 支持 |
| 与深度学习框架集成 | 无 | 深度集成 |
提示:在Jupyter notebook中,可以使用
%matplotlib inline魔法命令直接显示图表,方便调试和可视化。
理解PyTorch的自动微分机制至关重要。这个被称为autograd的系统,能够自动计算导数,让我们从繁琐的手动求导中解放出来。试看这个简单的例子:
python复制import torch
x = torch.tensor(2.0, requires_grad=True)
y = x**2 + 3*x + 1
y.backward()
print(x.grad) # 输出导数
