ResNet学习笔记

ResNet学习笔记

ResNet框架

ResNet亮点

  • 超深网络架构(Over 1000 layer)
  • 提出residual模块
  • 使用Batch Normalization加速训练(丢弃dropout)

为什么层数越高,效果越差?

  • 梯度消失或梯度爆炸
    • 如何解决:数据标准化,权重初始化,Batch Normalization
  • 退化问题(degradation problem)
    • 如何解决:残差网络(residual)

Residual

Residual(残差)结构

两种残差结构

因为是相加,所以主分支与shortcut的输出特征矩阵shape必须相同

Batch Normalization

去调整一批数据的feature map的分布,而不是某一张图片

BN公式

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

BN示意图

需要注意的地方:

  1. 训练时要将traning参数设置为True,在验证时将trainning参数设置为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。

  2. batch size尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。

  3. 建议将bn层放在卷积层(Conv)和激活层(例如Relu)之间,且卷积层不要使用偏置bias,因为没有用(偏置完后归一化,偏置就不存在了)

迁移学习

优势

  1. 能快速训练出一个理想结果

  2. 当数据集较小也能训练出理想效果

注意:要注意别人预处理的方式

因为一些网络的浅层是比较通用的,所以可以迁移到其他网络里去

迁移学习示意图

作者

Mrlaolu

发布于

2025-12-12

更新于

2025-12-12

许可协议

评论