《深度学习实战》第1天-ResNet

 

活动地址:CSDN21天学习挑战赛

学习日记
1,学习知识点

​学习地址:跟李沐学AI的个人空间_哔哩哔哩_Bilibili
​论文文章:He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770–778).

 简单介绍下残差网络(ResNet),在深度神经网络发展地越来越深的时候,往往存在着这样的问题:1.网络的层数增加导致模型过拟合;2.更深的网络需要更大的训练开销;

Kaiming He等人在2016发表的Deep Residual Learning for Image Recognition提出了残差块(Residual block)的概念,如下图:《深度学习实战》第1天-ResNet_第1张图片Original 

《深度学习实战》第1天-ResNet_第2张图片

Residual block 

a上标l表示在第l层的输入\输出,现在新增加了一条“高速通道”(Short cut),起点是从l层的linear层之前,终点为l+1层的linear层之后。

ResNet在网络层设计上还是沿用了GoogleNet,无论是叠加Residual block 或 Inception block,还是最后的Avg maxpooling层。那么Residual block和 Inception block的区别在哪,仔细观察下会发现Inception block是没有用BN(batch normal)层的,而Residual block在每个conv之后都加上了BN(1x1的conv后面没有加)。

在论文的图1中展示了堆叠层数越多导致的training erro和test erro上升的问题,这是在plain network的情况,而使用了residual block的ResNet遵循了网络越深效果越好的直觉。如图:

《深度学习实战》第1天-ResNet_第3张图片

图片来自论文中的图4,数据集为ImageNet。可以看出ResNet对于更深的网络,有着避免过拟合的效果。

2,学习遇到的问题

在Residual block中的1x1的conv的作用是什么,似乎在每个Stage的第一步都会使用一次1x1conv。

3,学习的收获

跟着沐神从CNN一直到ResNet,感觉收货了一些基础的概念,如步长(stride)一般取2意味着输入的长和宽减半,填充(padding)可以让你的输入减少不那么大,conv一般取奇数3x3\5x5\7x7等等。

4,实操

实操地址:https://zh-v2.d2l.ai/chapter_convolutional-modern/resnet.html#id6

首先跑了一般初始代码:

原始的是ResNet-18,18是指的层数,详细见论文的表格1.

《深度学习实战》第1天-ResNet_第4张图片

b1比较特殊,在输入为64x64,步幅为2的7x7卷积层,接上一个BN,最后加上3x3的Maxpooling,这里与GoogleNet的区别就在卷积层后加了BN层。BN层的作用就是把每层输出的特征做归一化操作,如均值为0,方差为1,来缓解下一层的输入所需要做的变化。它与特征归一化的不同在于,一个是针对输入的数据做归一化的操作,而不管输入之后的每一层的数值的变化,BN是对于每一层的输出做归一化,这样减缓了下一层输入所改变的程度。 如果每解释清楚,可以看下吴恩达的深度学习P75-76,有很好地解释这个BN。最后一层跟GoogleNet是一样的。

ResNet-18:

《深度学习实战》第1天-ResNet_第5张图片

 

 

ResNet-34:

《深度学习实战》第1天-ResNet_第6张图片

ResNet-34跟ResNet-18共有一个Residual block,不同的只有层数。

我们来看看它的效果如何:

《深度学习实战》第1天-ResNet_第7张图片 同样的参数设置,在epochs=10的情况下,在Fashion-MNIST数据集上,ResNet-18比ResNet-34要略好点。

 

 

你可能感兴趣的:(深度学习,python)