首页 > 其他分享 >CNN卷积神经网络

CNN卷积神经网络

时间:2022-09-05 15:00:13浏览次数:82  
标签:输出 卷积 矩阵 神经网络 池化 CNN 输入

CNN网络结构

神经网络的发展历史中介绍了,CNN被广泛应用与图像领域,本文对CNN网络结构与算法进行进一步的介绍。

基本网络结构

CNN的网络结构一般包括:

  • 输入层
  • 由若干卷积层、激活函数、池化层、全连接层组成的隐藏层
  • 使用softmax激活函数的输出层

卷积运算

CNN中的卷积运行表示为:

\[S(i,j) = (X*W)(i,j) = \sum_m\sum_nX(i+m)(j+n)W(m,n) \]

其中,X表示输入,W表示卷积核

卷积层

CNN的卷积运算其实就是对输入的局部矩阵和卷积核的矩阵各个位置上的元素相乘再相加。
例如下图,输入为一个3×4的矩阵,卷积核为2×2的矩阵,卷积每次移动的步长为1。首先对输入矩阵左上角的2×2的矩阵与卷积核矩阵进行按位置相乘相加的运算,即得到卷积后第一个元素的值:aw+bx+ey+fz。接着对卷积核向右移动一个位置,对第二个局部矩阵(b,c,f,g)与卷积核进行卷积运算,得到结果: bw+cx+fy+gz,以此类推,最终得到的卷积层输出为一个2×3的矩阵。
image

对卷积层的输出,一般会通过ReLU激活函数(\(Relu(x) = max(0,x)\)),将输出张量中小于0的元素值都变为0。

池化层

池化层的作用是对输入张量的各个子矩阵进行压缩,例如2×2的池化,就是将子矩阵的每2×2个元素变成一个元素,3×3的池化就是将子矩阵的每3×3个元素变成一个元素。
对输入子矩阵的n×n个元素变成一个,一般有两个方法:一个是Max,即取所有元素的最大值。另一个是Average,即取所有元素的平均值。

下图示例:按照最大池化方法,采用2×2的池化,步进为2.
首先对红色2x2区域进行池化,由于此2x2区域的最大值为6.那么对应的池化输出位置的值为6,由于步幅为2,此时移动到绿色的位置去进行池化,输出的最大值为8.同样的方法,可以得到黄色区域和蓝色区域的输出值。最终,我们的输入4x4的矩阵在池化后变成了2x2的矩阵。进行了压缩。
image

CNN前向传播算法

输入层到卷积层的前向传播

输入层是第一层,一般输入层连接的第二层都是卷积层。输入层到卷积层的前向传播的表达式:

\[a^2 = \sigma(z^2) = \sigma(a^1 * W^2 + b^2) \]

其中:上标代表层数,星号代表卷积,b代表偏移向量,\(\sigma\)代表激活函数,一般为ReLU

隐藏层到卷积层的前向传播

类似的,卷积层处于网络结构中间位置的情况下,隐藏层向卷积层的前向传播算法可以表示为:

\[a^l = \sigma(z^l) = \sigma(a^{l-1} * W^l + b^l) \]

隐藏层到池化层的前向传播

池化层的目的是对输入进行压缩,例如输入矩阵是N×N维的,池化大小是K×K的区域,则输出的矩阵是\(\frac{N}{K} * \frac{N}{K}\)维。

隐藏层到池化层前向传播涉及的参数包括:

  • 池化区域的大小K
  • 池化标准,一般是Average、Max

隐藏层到全连接层的前向传播

全连接层与DNN模型相同,前向传播算法为:

\[a^l = \sigma(z^l) = \sigma(W^la^{l-1}) + b^l \]

这里的激活函数\(\sigma\)一般为sigmoid或tanh。

隐藏层到全连接层前向传播涉及的参数包括:

  • 全连接层的激活函数,如sigmoid、tanh
  • 全连接层的神经元个数

经过若干全连接层之后,最后一层为softmax输出层,输出层和普通全连接层的唯一区别是使用softmax函数。

CNN前向传播算法小结

输入

  • 输入数据,如图片样本
  • CNN模型的层数
  • 所有隐藏层的类型
  • 对于卷积层,涉及卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步进S
  • 对于池化层,涉及池化区域大小,池化标准(如Max、Average等)
  • 对于全连接层,涉及全连接层的激活函数(输出层除外),各层的审计格式

输出

CNN的模型输出\(a^L\)

前向传播算法

1、根据输出层的填充大小P,填充原始图片的边缘,得到输入张量\(a^1\)
2、初始化所有隐藏层的参数W、b
3、for \(l\)=2 to \(L-1\):
a) 如果第\(l\)层为卷积层,则输出为:

\[a^l = ReLU(z^l) = ReLU(a^{l-1} * W^l + b^l) \]

b) 如果第\(l\)层是池化层,则输出为:

\[a^l = pool(a^{l-1}) \]

其中pool指按照池化区域大小k和池化标准将输入张量缩小的过程

c) 如果第\(l\)层是全连接层,则输出为:

\[a^l = \sigma(z^l) = \sigma(W^la^{l-1}) + b^l \]

4、对于输出层(第L层):

\[a^L = softmax(z^L) = softmax(W^La^{L-1} + b^L) \]

参考

https://www.cnblogs.com/pinard/p/6483207.html

标签:输出,卷积,矩阵,神经网络,池化,CNN,输入
From: https://www.cnblogs.com/init0ne/p/16635391.html

相关文章

  • 深度神经网络DNN介绍
    DNN网络结构DNN是从多层感知器发展而来的第三代神经网络,DNN的网络结构分为三部分:输入层、隐藏层、输出层。DNN的层与层之间是全连接的,第\(i\)层的任意一个神经元一定与第......
  • 神经网络的发展历史
     1、三代神经网络的发展第一代神经网络:感知器(1950s)第一代神经网络又称为感知机,在1950年左右被提出来,算法分为输入层和输出层,输入和输出之间为线性关系,感知机无法处理非......
  • 推荐系统!基于tensorflow搭建混合神经网络精准推荐! ⛵
    ......
  • 世界模型、薛定谔猫和神经网络之间有什么联系?
    世界模型、薛定谔猫和神经网络之间有什么联系?资源几个世纪以来,好奇的头脑一直在试图破解我们周围世界的结构。大多数人都会同意,任何科学分支都遵循相同的目标——试图......
  • 前馈神经网络
    神经元一个神经元的结构如下:用数学公式表示为:\[\begin{aligned}a&=f(\sum_{d=1}^{D}w_{d}x_{d}+b)\\&=f(\boldsymbol{w}^{\top}\boldsymbol{x}+b)\\\end{al......
  • 神经网络求解RL
    神经网络解决连续状态空间(或者状态很多的情况)经验回放使得神经网络更拟合打乱状态之间的关联固定q多加一个q预测值的神经网络一段时间才会改变以此固定q让强化学......
  • 神经网络的学习与泛化能力
    一、学习能力,指在训练集上精度。二、泛化能力,指在测试集上精度。对于一个大型神经网络在一个大数据集上跑,LOSS持续不降,第一步先减小数据量,比方说只在单张图片上跑,观察每......
  • 神经网络
    普通的神经网络普通神经网络有三个部分,输入层x,隐藏层h,输出层oCNN循环神经网络(RNN)RNN的每一个时序是一个前馈神经网络,但是为了在每一个时刻都包含前边时序的信息,所以RN......
  • 【人工智能】卷积神经网络
    用CNN实现离散数据的分类(以图像分类为例子)感受野感受野(ReceptiveField):卷积神经网络各输出特征图中的每个像素点,在原始输入图片上映射区域的大小全零填充目的:希望卷......
  • 从零开始的全连接神经网络中的反向传播
    从零开始的全连接神经网络中的反向传播使用Python和NumPy构建您自己的全连接神经网络的指南。Adog.Imagefrom今日医学新闻温柔的介绍在巴甫洛夫进行的一项著......