Pytorch神经网络工具箱
一、神经网络核心组件
1. nn.Module
继承自 Module类,自动管理可学习参数。
适用于卷积层、全连接层、Dropout层等。
可与 nn.Sequential结合使用,支持训练/测试状态自动切换(如 Dropout)。
2. nn.functional
函数式接口,更像纯函数。
适用于激活函数、池化层等。
需手动传入权重、偏置等参数,不利于复用,无法与 nn.Sequential 结合。
二、构建模型的三种方式
1. 继承 nn.Module 基类
灵活定义网络结构,可自定义前向传播。
2. 使用 nn.Sequential 按顺序构建
三种实现方式:
可变参数(无法指定层名称)
使用 add_module方法
使用 OrderedDict指定名称
3. 继承 nn.Module并配合模型容器
使用 `nn.Sequential`、`nn.ModuleList`、`nn.ModuleDict` 封装网络模块,提升结构清晰度和复用性。
三、模型容器
nn.Sequential:顺序容器,按顺序执行各层。
nn.ModuleList:存储子模块的列表,支持迭代和索引。
nn.ModuleDict:存储子模块的字典,支持通过名称访问。
四、自定义网络模块
残差块(Residual Block)
类型一:输入与输出直接相加,后接 ReLU。
类型二:通过 1×1 卷积调整输入通道和分辨率,使其与输出形状一致。
组合这两种模块可构建现代经典网络(如 ResNet18)。
五、训练模型流程
1. 加载与预处理数据集
2. 定义损失函数(如交叉熵损失)
3. 定义优化方法(如 SGD、Adam)
4. 循环训练模型
5. 循环测试或验证模型
6. 可视化训练结果