- 继承nn.Module基类构建模型。
- 使用nn.Sequential按层顺序构建模型。继承nn.Module基类构建模型,又使用相关模型容器
- (nn.Sequential,nn.ModuleList,nn.ModuleDict等)进行封装。
继承nn.Module基类构建模型
运行结果
使用nn.Sequential按层顺序构建模型
1、利用可变参数
该方法构建时不能给每个层指定名称,如果需要给每个层指定名称,可使用add_module方法或OrderedDict方法。
2、使用add_module方法
3、 使用OrderedDict方法
继承nn.Module基类并应用模型容器构建模型
1、使用nn.Sequential模型容器
运行结果
2、 使用nn.ModuleList模型容器
运行结果
3、使用nn.ModuleDict模型容器
运行结果
自定义网络模块
-
残差块有两种
- 一种是正常的模块方式,将输入与输出相加,然后应用激活函数ReLU。
- 另一种是为使输入与输出形状一致,需添加通过1×1卷积调整通道和分辨率
组合这两个模块得到现代经典RetNet18网络结构。
训练模型
- 加载预处理数据集
- 定义损失函数
- 定义优化方法
- 循环训练模型
- 循环测试或验证模型
- 可视化结果