ResNet学习笔记
ResNet学习笔记

ResNet亮点
- 超深网络架构(Over 1000 layer)
- 提出residual模块
- 使用Batch Normalization加速训练(丢弃dropout)
为什么层数越高,效果越差?
- 梯度消失或梯度爆炸
- 如何解决:数据标准化,权重初始化,Batch Normalization
- 退化问题(degradation problem)
- 如何解决:残差网络(residual)
Residual


因为是相加,所以主分支与shortcut的输出特征矩阵shape必须相同
Batch Normalization
去调整一批数据的feature map的分布,而不是某一张图片

其中 $\gamma$ 和 $\beta$ 是用来调整最后得到的均值和方差的,这两个需要学习

需要注意的地方:
训练时要将traning参数设置为True,在验证时将trainning参数设置为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。
batch size尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。
建议将bn层放在卷积层(Conv)和激活层(例如Relu)之间,且卷积层不要使用偏置bias,因为没有用(偏置完后归一化,偏置就不存在了)
迁移学习
优势
能快速训练出一个理想结果
当数据集较小也能训练出理想效果
注意:要注意别人预处理的方式
因为一些网络的浅层是比较通用的,所以可以迁移到其他网络里去
