CNN 解析 --唐宇迪
分类:
文章
•
2024-08-14 22:54:40
- 1 卷积过程大概是这样,注意有深度信息。
- 2.卷积的计算过程,注意卷积的深度要和图像的通道数相同
- 3.说到卷积,一定要提到下面这张经典的图
-这张图的意思,大概就是一个RGB三通道的图,conv层是两个filter组成的卷积,维度都是3,最后经过内积以及加和得到两个特征图。
-大家也有注意到,本来我的图像是5*5的,添加了一圈(padding=0),这是因为卷积会重点计算靠近中心的像素点,忽=忽视边界点,补上padding是为了更好的利用边界点,这样不容易丢失特征信息。
-卷积后的特征图往往会变小,补上padding=0也会使特征图不会变化,压缩和降维的操作交给pool层去做即可。
- 4 首先提取图像的边缘信息等局部信息,之后再对局部信息进行拼接提取更高层的特征。
- 5.每个卷积层有不同数量的卷积核,一个filter输出一个特征层
- 特征图大小计算公式,其中W1、H1表示输入的宽度、长度;W2、H2表示输出特征图的宽度、长度; F表示卷积核长和宽的大小;S表示滑动窗口的步长;P表示边界填充(加几圈0)
- 6.卷积参数共享
- 每个卷积层有不同的卷积核,每个卷积核权重矩阵都不相同,但当每个卷积层对图像进行卷积运算的时候,所有区域都使用同一个权重矩阵,因为不可能不同区域使用不同的权重矩阵,这样参数过多。
- 每个卷积核都有自己的bias.
- 池化层,对特征图降维和压缩
- 卷积的过程就是,特征图不断变多,尺度不断被压缩。
- 7.如下是Alexnet的架构
- 最后几层FC是全连接层,用于分类,全连接层的输入是一位向量,把特征图模块的深度转换到第三个维度,比如[323210,5]
;含义就是将size:32*32,depth:10 的特征图模块压缩到一维,然后分类成5个类别。
- 8.感受野
- 感受野,就是可以推算出当前特征图的一个数据是由原始输入层的多少个数据卷积输出的。
- 下图的第三次卷积后的一个数据由原始输入5*5的size得到。
- 这时候就有个疑问,为什么不直接用5*5的卷积层输出结果,而是用这么多conv层呢,这样不会使速度变慢吗?
- 其实神经网络的运行速度是由参数决定的,多个小conv层往往会有更少的参数
- 很明显,堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取 也会越细致,由于每个conv后面跟一个RELU层,所以加入的非线性变换也随着增多。
- 并不是这样的。
- 这是为了可以有效地堆叠网络深度,引入Resnet 残差网络。
- 当堆叠的层数输出的准确率未添加的要小时,使堆叠的层数的权重变小,这样保证网络的准确率至少不会比原来差。
- 这里是34层的resnet,但有没有注意到有虚线出现,这是因为不同深度的特征层和无法相加的,可能添加的conv层维度filter变多,这样就无法和原来的输出相加,这就需要对原有的输入做一次conv改变特征层维度 。

- 8迁移学习
- 有个小技巧,在训练我们的网络时,可以先去着别人做过的类似的工作,然后之前套用训练好的权重参数,以及网络架构,只对输入输出做出适合我们任务的修改。
- 分类任务举例,因为是针对我们的任务分类,所以只对FC层做训练,之前特征提取的层用训练好的参数,最后整体网络架构进行训练。
- 训练集和验证集要采用同一种预处理方式
- batch_size 越大越吃显存
- tensor 的颜色通道在第一位,在输出tesor图像是要修改(transform)
- mini_batch是神经元的个数
- 尽量使用交叉验证的方式训练
-
- 9.反向传播
- 通过Loss值调整权重,
- 链式法则求导调整权重,负梯度值调整权重