深度学习第五章-ResNet网络
本模型位于:E:\python文件\deep-learning-for-image-processing-master\pytorch_classification\Test5_resnet
一.模型介绍
特点:
- 超深的网络结构(突破1000层)
- 提出residual模块
- 使用Batch Normalization加速训练(丢弃dropout)
1.残差模块
(左边是18层、34层的残差块结构;右边是50层、101层、152层的残差块结构)
2.实线残差结构与虚线残差结构
从conv3层开始需使用虚线所示的残差网络结构(初始层有下采样)
3.BN处理方法
通常在卷积层或全连接层之后添加
Batch Normalization的目的是使我们的一批(Batch) 特征层满足均值为0,方差为1的分布规律
4.模型参数
二.数据集-花分类集
- 如同前两章
三.模型搭建
1.定义18层、24层网络残差块结构
图示,左边结构:conv2_x层、右边结构:conv3_x层及之后
代码
1 | class BasicBlock(nn.Module): #定义残差块(18层、34层网络使用) |
2.定义50层、101层、152层残差块网络结构
- 图示:左边结构:conv2_x层、右边结构:conv3_x层及之后
- 代码
1 | class Bottleneck(nn.Module): #定义残差块 (50层、101层、152层网络使用) |
3.构建网络模型
1 | class ResNet(nn.Module): #定义网络模型结构 |
4.定义各版本的Resnet网络
1 | def resnet34(num_classes=1000, include_top=True): #本次训练选择的模型 |
四.模型训练
1.使用迁移训练的方法,下载预训练权重
1 | net = resnet34() |
2.训练模型
1 | loss_function = nn.CrossEntropyLoss() |
五.测试结果
- 如同前一章结果