ElitesAI·动手学深度学习PyTorch版学习笔记-批量归一化和残差网络;凸优化;梯度下降

宅家中看到Datawhale的学习号召,在大牛云集的群上找到了一个很佛系的小组,战战兢兢地开始了小白的深度学习之旅。感谢Datawhale、伯禹教育、和鲸科技,感谢课程制作者、组织者、各位助教以及其他志愿者!

1 批量归一化和残差网络
1.1 批量归一化
归一化:主要对浅层模型。对输入的数据进行处理,使任意一个特征在数据集中所有样本上的均值为0、标准差为1。这样可以使输入的数据各个特征的分布相近,避免不同的分布影响学习效果。
批量归一化:主要对深度模型。对前一层的输出进行归一化,调整中间输出的分布,从而使整个模型更加稳定。为了避免破坏前一层学习后的特征分布,通过变换重构,引入了可学习参数。
全连接层的批量归一化在仿射变换和激活函数之间。
卷积层的批量归一化在卷积计算之后、应用激活函数之前。单通道的卷积,对该通道中的元素使用同一组可学习参数,使用相同的均值和方差;如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。
训练时以batch为单位,对每个batch计算均值和方差;预测试时用移动平均估算整个训练数据集的样本均值和方差。
1.2 残差网络
深度学习存在一个瓶颈:网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。
残差网络(ResNet)基于卷积网络,通过残差块来实现跨层的数据传播,使数据传播更快,可以使模型在深度增加的情况下避免梯度消失等问题,提高速度和准确度。
稠密连接网络(DenseNet)主要由稠密块和过渡层组成。稠密块连接输入和输出,过渡层控制通道数,使之不会过大。DenseNet和ResNet的主要区别是,DenseNet里模块B的输出不是像ResNet那样和模块A的输出相加,而是在通道维上连结。这样模块A的输出可以直接传入模块B后面的层。在这个设计里,模块A直接跟模块B后面的所有层连接在了一起。

发布了6 篇原创文章 · 获赞 0 · 访问量 170

猜你喜欢

转载自blog.csdn.net/liuyi6111/article/details/104501099