ResNet结构
- 网络结构深(突破1000层)
- 残差模块
使用Batch Normalization加速训练(丢弃dropout)
虚线结构的目的
残差块结构
ResNet-34;ResNet-50/101/152 (bottleneck)
- 1*1的卷积层用于升维和降维
以256-d为例
Conv_3/4/5的第一层使用虚线残差结构
- 对于18和34层的网络结构来说,最大池化下采样后得到的输出为[56,56,64],刚好是实线残差结构所需的输入shape
- 对于50/101/152来说,最大池化下采样后得到的输出为[56,56,64],输入shape是[56,56,256];这里的Conv2对应的第一个虚线残差层仅调整特征矩阵深度,高和宽不变
Batch Normalization
- 目的:一个batch的feature map满足均值为0,方差为1的分布规律
- 使用BN层需要注意的问题:
- 训练时将training参数设置为True,验证时设为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制
- batchsize尽量设置大(设置越大越接近整个样本训练集的均值和方差)
- 建议将BN层放在Conv和Relu之间,且卷积层不要使用bias
迁移学习
- 方法:
- load权重后训练所有参数
- load权重后只训练最后几层
- load权重后在原网络基础上再添一层全连接层,仅训练最后一个全连接层