• 【2022新生学习】第三周要点


    1、Batch Normalization

    使用BN时需要注意的问题:

    • 因为训练时会实时统计均值和方差,但是测试时要使用历史统计的值,不用当前的,所以要进行设置。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。(类似的还有 Dropout)
    • batch size尽可能设置大点,设置的越大求的均值和方差越接近整个数据集的真实分布。(但也要考虑你的硬件设备)
    • 将BN层放在卷积层(Conv)和激活层(例如ReLU)之间,且卷积层不要使用偏置bias。

    2、分组卷积

    Group Convolution 是对输入feature map进行分组,然后每组分别卷积。如果分为G组,则参数量会降低为原来的 1/G。

    速度提升: 理论上可以提高网络的速度,但实际上未必有3X3的卷积效率高,这是因为 pytorch 专门对 3X3 的卷积进行了优化,而分组卷积破坏了这种优化。

    精度提升: 分组可以把特征变为若干子空间(subspace),对于图像信息有更加全面的了解。有些像Transformer 里的 Multi-Head Self-Attention,只不过 Transformer 里面是对注意力计算分组,起了个名字叫做“多头”,而组卷积里是对 convolution 分组。

    Transformer来自于自然语言处理,在真实语言环境中,每一个词和不同的词,都有不同的关系。可以用不同的 Attention 来补充这些不同的关系。上图展示了三种 attention,即三个子空间,放在子空间里可以更好的学习这种关系。

    AlexNet里也有一个经典的发现,上图中前三行是 GPU1 学习到的滤波器,后三行是GPU2学习到的滤波器。可以发现一个主要学习了纹理、梯度信息,另一个主要学习了色彩信息,可以理解为不同的子空间。

    3、Res2Net

    来自于南开大学程明明老师组的工作,特征分组+多尺度的完美结合。论文中有两个实验讨论了特征的分组。可以看出,随着尺度的提升,准确率会提升,速度会降低。而且,分组大于4的时候,相对于分组为4提升并不十分明显。所以,特征分组并不是越多越好,组数增加会增加计算消耗,需要一定的平衡。

  • 相关阅读:
    【校招VIP】前端算法考点之大数据相关
    Python异步编程小解一
    Pytorch(一)——Pytorch基础知识
    Prometheus简介和安装教程
    Git的基本使用方法
    手写内存泄漏检测组件
    对于Java中的Loop或For-each,哪个更快
    Power Automate详细部署方案
    【第四篇】商城系统-品牌管理实现
    IDEA的使用
  • 原文地址:https://blog.csdn.net/gaopursuit/article/details/126033571