110_PyTorch 实战:利用 Sequential 快速搭建 CIFAR-10 网络模型

张开发
2026/5/8 2:13:13 15 分钟阅读

分享文章

110_PyTorch 实战:利用 Sequential 快速搭建 CIFAR-10 网络模型
在掌握了卷积、池化、激活和线性层等基础组件后如何高效地将它们组织在一起PyTorch 提供了nn.Sequential容器它能像“串联电路”一样将各层连接起来极大地简化了网络搭建的代码逻辑。1. 为什么要使用 Sequential简洁易读避免了在__init__中定义大量变量也简化了forward函数中的数据流动逻辑。结构清晰将整个网络结构集中在一个模块中方便管理和调试。2. 核心公式复习计算输出尺寸在搭建实战中计算每一层后的 Tensor 尺寸至关重要。文件再次强调了卷积层输出尺寸的计算公式实战案例输入为 32 *32 的图片经过 5*5 卷积、步长为 1、填充为 2 后输出尺寸依然是 32*32。通过这个公式我们可以精确控制每层的数据维度。3. 代码实战构建 CIFAR-10 网络模型文件演示了如何为一个经典的分类任务搭建模型。3.1 传统搭建方式 vs Sequential 方式在114号文件中通过对比展示了Sequential的优雅Pythonimport torch from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential class Tudui(nn.Module): def __init__(self): super(Tudui, self).__init__() # 使用 Sequential 将所有层打包 self.model1 Sequential( Conv2d(3, 32, 5, padding2), # 第一层卷积 MaxPool2d(2), # 第一次池化 Conv2d(32, 32, 5, padding2), # 第二层卷积 MaxPool2d(2), # 第二次池化 Conv2d(32, 64, 5, padding2), # 第三层卷积 MaxPool2d(2), # 第三次池化 Flatten(), # 展平 Linear(64*4*4, 64), # 第一个全连接层 Linear(64, 10) # 输出层10个类别 ) def forward(self, x): # 只需要调用一次 model1数据会自动流经所有层 x self.model1(x) return x tudui Tudui()4. 网络结构的验证与可视化搭建完模型后我们通常需要验证其逻辑是否正确尺寸检查创建一个虚拟输入input torch.ones((64, 3, 32, 32))通过output tudui(input)检查输出形状是否为[64, 10]。可视化 (TensorBoard)使用SummaryWriter的add_graph方法。Pythonfrom torch.utils.tensorboard import SummaryWriter writer SummaryWriter(logs_seq) writer.add_graph(tudui, input) # 在 TensorBoard 中查看漂亮的网络拓扑图 writer.close()5. 总结搭建网络的“三步走”通过分析该文件我们可以总结出高效搭建 PyTorch 模型的流程算尺寸根据输入和目标输出计算每层所需的stride和padding。进容器利用nn.Sequential按顺序填入卷积、池化、激活等模块。做校验用模拟数据跑一遍forward并配合 TensorBoard 查看结构。

更多文章