Resnet
1. why resnet?
- 梯度消失或梯度爆炸
- 退化问题
2. 梯度消失或梯度爆炸通常怎样解决?
- 数据标准化处理
- 权重初始化
- BN(Batch Normalization)
3. Resnet网络的亮点
- 超深的网络结构(突破1000层次)
- 提出residual模块
- 使用Batch Normalization加速训练(丢弃dropout)
下图为Residual残差结构, 注意relu位置,注意是直接加,而不是维度上的拼接
4. Residual结构及参数量
左侧为较浅网络中的residual结构,右侧为较深网络中的residual结构,图中为假设左边也输入256维的计算量比较
5. Resnet34结构示例
实线虚线区别:为了保证主分支与捷径分支的shape完全一致
Batch Normalization
1. 目的
Batch Normalization的目的就是使一批次(batch)的feature map满足均值为0,方差为1的分布规律。
2. 使用BN所需要注意的一些问题
(1)训练时要将traning参数设置为True,在验证时将trainning参数设置为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。(训练时会不断统计均值和方差,测试时使用历史统计的均值和方差)
(2)batch size尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。
(3)建议将bn层放在卷积层(Conv)和激活层(例如Relu)之间,且卷积层不要使用偏置bias,因为没有用,参考下图推理,即使使用了偏置bias求出的结果也是一样的
迁移学习
1. 优势
- 能够快速地训练出一个理想的结果
- 当数据集较小时也能训练出理想的结果
注意:使用别人预训练参数时,要注意别人的预处理方式
2. 常见的迁移学习方式