首页 > 编程知识 正文

卷积神经网络cnn原理,CNN卷积神经网络的主要结构

时间:2023-05-05 22:33:31 阅读:127470 作者:982

1、cnn卷积神经网络概念卷积神经网络(cnn )是深度学习算法应用最成功的领域之一。 卷积神经网络包括一维卷积神经网络、二维卷积神经网络和三维卷积神经网络。 卷积神经网络主要用于序列类数据处理,二维卷积神经网络常用于图像类文本的识别,三维卷积神经网络主要用于医学图像及视频类数据识别。

2、卷积神经网络结构卷积神经网络通常包括以下几层:

卷积层:卷积神经网络中各层卷积层由多个卷积单元组成,各卷积单元的参数通过反向传播算法进行了优化。 卷积运算的目的是提取输入不同的特征。 第一层卷积层可能只能提取边缘、线、角等低级特征。 更多层网络可以从低级特征中反复提取更复杂的特征。 例如,如果你看zydrs的照片,如果你看猫的眼镜和嘴巴,你可能就会知道这是zydrs电影。 没有必要说所有的部分都结束了才知道。 啊,原来这是猫啊。 所以,如果能以某种方式识别某个图像的典型特征,也就知道该图像的类别。 这时,卷积的概念应运而生。 例如,现在有4*4的图像。 设计两个卷积核(卷积核也称为特征提取器或过滤器),看看利用卷积核时图像会变成什么样。

从上图可以看到,原始图像是灰度图像,每个位置表示像素值,0表示白色,1表示黑色,(0,1 )区间的数值表示灰度。 对于该4 * 4的图像,使用2个2*2的卷积核进行了计算。 将步长设置为1。 也就是说,在2 * 2的固定窗口中向右滑动1个单位。 以第一个卷积核filter1为例,计算过程如下:

1 feature _ map1(1,1 )=1*10*(-1 )1*1*(-1 )=12 feature _ map1(1,2 )=0*1*(-1 )1* ) )-1 以相同的方式,如果能够计算出在第二个卷积内核中进行卷积运算之后的feature_map2,则完成该层的卷积操作。 feature_map大小公式: [ (原始图像大小-卷积内核大小(/步长) 1。

激励层:对卷积层的输出结果进行非线性映射

常用激励函数: Sigmoid函数、Tanh函数、ReLU函数。

CNN激发函数一般为ReLU,其特点是收敛快,求解梯度简单,脆弱。

池化层:池化层夹在连续卷积层之间: 1、降低卷积层输出的特征向量维数,以减少训练参数的数量; 2、只留下最有用的图像信息,减少噪声的传递。

一般来说,池化的方法有以下两种。

在“最大池”幻灯片窗口中取最大值“平均池”幻灯片窗口中的所有值的平均值,通过第2 * 2层卷积操作后,将原始图像转换为4 池化层的主要目的是通过下采样方式,在不影响画质的情况下压缩图像,减少参数。 简单来说,如果现在池化层采用最大轮询,大小为2 * 2,步长为1,然后重新取每个窗口的最大数值,则图像大小将从3 * 3变为2 * 2。 (公式:输出边长度=(输入边长度卷积核边长度) /步幅1; (3-2)1=2) 在上面的示例中,将转换为:

接下来对Zero Padding进行说明。 到目前为止,我们的照片从4 * 4开始在卷积层变成了3 * 3,在游泳池化层变成了2 * 2。 这只是一种折叠。 添加几层后,照片会不会越来越小呢? 这时,我们引出“Zero Padding”(零填充)。 这有助于确保每次折叠或池化输出时图像的大小不变。 例如,如果在上面的示例中添加Zero Padding,并使用3*3卷积核心,则转换后的图像大小将与原始图像大小相同。 请参照下图。

通常,如果希望图像在完成卷积操作后保持图像大小,请选择大小为3 * 3的卷积内核和1的zero padding,或5 * 5的卷积内核和2的zero padding。 这样可以在计算后保持图像的原始大小。 那么加入zero padding后的feature_map大小=(width2* padding _ size-filter _ size (/stride1) )。

:这里的width也会被height取代。 这里是默认的正方形卷积核,weight=height。 如果两者不相等,可以分别计算,分别填零。

- 全连接层两层之间的所有神经元都有加权连接,通常全连接层位于卷积神经网络的尾部。 也就是说,它与传统的神经网络神经元连接方法相同。

作用:全连接层在整个卷积神经网络中起“分类器”的作用。 提取特征并分类。

这就是完整的卷积神经网络,即使想重叠层数的情况下,一般来说

叠加“Conv-Pooing",通过不断的设计卷积核的尺寸,数量,提取更多的特征,最后识别不同类别的物体。做完Max Pooling后,我们就会把这些数据“拍平”,丢到Flatten层,然后把Flatten层的output放到full connected Layer里,采用softmax对其进行分类。

cnn的一个基本流程图:

3、 层的排列规律

卷积神经网络最常见的形式就是将一些卷积层和ReLU层放在一起,其后紧跟池化层(汇聚层),然后重复如此直到图像在空间上被缩小到一个足够小的尺寸,在某个地方过渡成成全连接层也较为常见。最后的全连接层得到输出,比如分类评分等。换句话说,最常见的卷积神经网络结构如下:

其中*指的是重复次数,POOL?指的是一个可选的汇聚层。其中N >=0,通常N<=3,M>=0,K>=0,通常K<3。例如,下面是一些常见的网络结构规律:

INPUT -> FC ,实现一个线性分类器,此处N = M = K = 0。INPUT -> CONV -> RELU -> FC,单层的卷积神经网络*INPUT -> [CONV -> RELU -> POOL]2 -> FC -> RELU -> FC,此处在每个汇聚层之间有一个卷积层,这种网络就是简单的多层的卷积神经网络。**INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL]3 -> [FC -> RELU]2 -> FC ,此处每个汇聚层前有两个卷积层,这个思路适用于更大更深的网络(比如说这个思路就和VGG比较像),因为在执行具有破坏性的汇聚操作前,多重的卷积层可以从输入数据中学习到更多的复杂特征。
最新进展:传统的将层按照线性进行排列的方法已经受到了挑战,挑战来自谷歌的Inception结构和微软亚洲研究院的残差网络(Residual Net)结构。这两个网络的特征更加复杂,连接结构也不同。 4、卷积层的大小选择

几个小滤波器卷积层的组合比一个大滤波器卷积层好。假设你一层一层地重叠了3个3x3的卷积层(层与层之间有非线性激活函数)。在这个排列下,第一个卷积层中的每个神经元都对输入数据体有一个3x3的视野。第二个卷积层上的神经元对第一个卷积层有一个3x3的视野,也就是对输入数据体有5x5的视野。同样,在第三个卷积层上的神经元对第二个卷积层有3x3的视野,也就是对输入数据体有7x7的视野。假设不采用这3个3x3的卷积层,二是使用一个单独的有7x7的感受野的卷积层,那么所有神经元的感受野也是7x7,但是就有一些缺点。首先,多个卷积层与非线性的激活层交替的结构,比单一卷积层的结构更能提取出深层的更好的特征。其次,假设所有的数据有C个通道,那么单独的7x7卷积层将会包含 [公式] 个参数,而3个3x3的卷积层的组合仅有 [公式] 个参数。直观说来,最好选择带有小滤波器的卷积层组合,而不是用一个带有大的滤波器的卷积层。前者可以表达出输入数据中更多个强力特征,使用的参数也更少。唯一的不足是,在进行反向传播时,中间的卷积层可能会导致占用更多的内存。

5、层的尺寸设置规律 输入层:应该能被2整除很多次。常用数字包括32(比如CIFAR-10),64,96(比如STL-10)或224(比如ImageNet卷积神经网络),384和512。卷积层:应该使用小尺寸滤波器(比如3x3或最多5x5),使用步长S=1。还有一点非常重要,就是对输入数据进行零填充,这样卷积层就不会改变输入数据在空间维度上的尺寸。比如,当F=3,那就使用P=1来保持输入尺寸。当F=5,P=2,一般对于任意F,当P=(F-1)/2的时候能保持输入尺寸。如果必须使用更大的滤波器尺寸(比如7x7之类),通常只用在第一个面对原始图像的卷积层上。池化层(汇聚层):负责对输入数据的空间维度进行降采样。最常用的设置是用用2x2感受野(即F=2)的最大值汇聚,步长为2(S=2)。注意这一操作将会把输入数据中75%的激活数据丢弃(因为对宽度和高度都进行了2的降采样)。另一个不那么常用的设置是使用3x3的感受野,步长为2。最大值汇聚的感受野尺寸很少有超过3的,因为汇聚操作过于激烈,易造成数据信息丢失,这通常会导致算法性能变差。
为何使用零填充?使用零填充除了前面提到的可以让卷积层的输出数据保持和输入数据在空间维度的不变,还可以提高算法性能。如果卷积层值进行卷积而不进行零填充,那么数据体的尺寸就会略微减小,那么图像边缘的信息就会过快地损失掉。 6、几种常见的卷积神经网络的论文地址 优雅的棒球

参考:
https://www.cnblogs.com/charlotte77/p/7759802.html
https://zhuanlan.zhihu.com/p/47184529

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。