一、CNN的基本结构:1.图像为输入层
2 .接着是CNN特有的卷积,卷积层的自激活函数使用了ReLU
3 .接下来是CNN特有的池化层(pooling ),
4 .卷积层池化层组合可多次出现在隐层中。 也可以灵活组合、卷积池化、卷积等
5 .一些卷积层池化层之后是全连通层,实际上是DNN结构,输出层采用Softmax激活函数进行图像识别分类
6 .常见的fc是CNN的全连接层。 全连接层通常包含最后在softmax中激活函数的输出层
二、卷积原理: https://MP.csdn.net/editor/html/109519709
总结:一补二乘三扫,CNN采用valid模式
三.多维卷积,例如,如果有三个5*5矩阵,三个2*2卷积核。 也就是说,卷取机的行列是5*5*3的tensor,卷积核是2*2*3的tensor。 或者输入的是RGB图像,可以分为三层。 那么在卷积的情况下,将卷积了三个二维tensor的结果相加并添加偏移。
见动图https://cs 231 n.github.io/assets/conv-demo/index.html
请注意,排成一列是卷积核。 但是,该卷积核的tensor.size ()为n x n x 3。 对应的偏移量也是三维的tensor
四. CNN特有的池化层池化是对输入张量的各个部分矩阵进行维压缩。 有两种方式: max和average。
假设filter的维数为nxn,则使用该filter扫描输入张量上,输出每个重叠小块的最大值或平均值。 可以把n维变成一维。
## CNN输入:
如果是二维张量,则等于有二维矩阵n x n。
如果是三维张量,则等于有m个二维矩阵n x n x m。 m不一定是3。
如果是四维张量,则有k个三维矩阵,每个三维矩阵又是m个二维矩阵。 所以四维输入的矩阵形式其实是n x n x m x k。 k也不一定是4。
CNN的全连接层经过卷积层和池化层,输入层输出到二维的tensor束。
全连接层的各层是有很多神经元的瓷砖。 基本结构如下图所示
那么,如何将以前输出的tensor转换为1xn的形式呢? n是第一层全连接层的神经元数。
这句话说:
类似于卷积。 在此折叠核的kernel_size=3x3x5。 也就是说,用五个3x3的子矩阵卷积卷积池化层的输出结果。 各个卷积核的卷积结果是神经元的输入。 因此,为了使这5个子矩阵与4069个神经元的第一层的所有连接层对应,需要利用3x3x5x4069的卷积核进行卷积。
在这里有两个作用:
1 .进行卷积,使卷积池化层的输出与所有连接层相对应。
2 .将分布式特征representation映射到样本标签空间,输出为一个值,并且基于该值来确定分类结果。 大幅减少特征位置对分类的影响
3 .多个全连接层可以有效解决非线性问题
#所有连接层一般进行dropout正则化。 这里有特点。 对于批量训练中的第一个数据jydxz,随机禁用一些神经元,得到的残差DNN结构训练数据并更新整个网络中所有神经元的w和b参数。
训练后,失活的神经元复活。 下一个数据到来时,又随机失活部分神经元得到新的缺失DNN结构,但这两次得到的结构不一定相同。
CNN前向传播算法
另一方面,CNN输入层向前传播到卷积层1 .卷积内核的维数(子矩阵的个数)与子矩阵的个数一致。
无论输入维数如何,前向传播算法都可以表示为:
上标是第几个图层,a是该图层的输入,w是该图层的权重矩阵,b是该图层的偏移。 z是该层的输入的中间输出,是表示卷积的激活函数。
2 .卷积核的个数和维数需要用卷积层来定义,是卷积层的属性。 就像卷积层所拥有的relu
与激活函数相同。
3 .卷积核的数目一般有多个,并且例如在k的情况下,卷积层的输出或下一卷积层的输入的数目是k。
4 .为了填充填充填充(p )并更好地识别边缘,通常在输入矩阵的周围添加几层0。 层数取决于卷积核的维数。
5 .步幅stride。
二.隐层向前传播到卷积层。 前面所有的卷积层和池化层包含全部连接层而构成的是隐藏层。
这里的输入来自隐藏的层。
还需要定义CNN模型卷积核的数量、卷积核矩阵的维度、填充大小和步长。
三、隐层正向池化层传播:1.定义池化趋势大小k
2 .池化标准、最大或平均
3 .如果输入为nxn,则输出的维度为n/k
四.隐层向前向全连接层传播
1 .激活函数选择rule、sigmoid、tanh、softma
x2.经过若干全连接层(一般不止一层),最后一层就是输出层。输出层一般选softmax做激活函数。其他的一般选另外的激活函数。
3.要定义全连接层各层的神经元
五、总结1.输入是一个图片样本。CNN模型的层数,所有隐藏层的参数和类型
2.若为卷积层,给出卷积核的个数、维度、填充、步幅
若为池化层,给出池化区域的大小k和池化标准
对于全连接层,给出各层的神经元数和激活函数的类型
3.根据填充,得到输入的张量a^1.并初始化所有隐藏层的参数w和b
4.for l in range(2,L):
若为卷积层,输出
若为池化层,输出
若为全连接层,输出
若为最后一层全连接层,即输出层
最后补充一句:卷积层和全连接层表达式看似相同,实际有很大的区别:
在卷积层中W是卷积核,星号(*)表示卷积,W卷积核矩阵是右乘的。W是却别与被卷机矩阵a的矩阵。
在全连接层中,W是参数矩阵,b是偏置,是单纯的矩阵的乘法而不是卷积,且是左乘。W和b 都是该层神经网络附带的属性只不过在训练过程中要不断跳整。
参考:CNN 入门讲解:什么是全连接层(Fully Connected Layer)?
深度神经网络(DNN)的正则化
卷积神经网络(CNN)模型结构
卷积神经网络(CNN)前向传播算法