一起学深度学习(一):卷积神经网络CNN

1.整体结构

CNN和之前介绍的神经网络一样,可以像乐高积木一样通过组装层来构建。如果不清楚的可以见上一篇博客。利用numpy实现三层神经网络不过CNN中新出现了卷积层(Convolution层)和池化层(Pooling层)。这两个新名字下篇博客中会介绍,这里先介绍下如何组装层以构建CNN。
之前介绍的神经网络中,相邻层的所以神经元之间都有连接,这称为全连接层。另外,用Affine层实现了全卷积层。如果使用这个Affine层,一个5层的全连接层的神经网络就可以通过下图所示的网络结构来实现。
在这里插入图片描述
如图所示,全连接的神经网络中,Affine层后面跟着激活层ReLU层(或者Sigmoid层)。这里堆叠了4层“Affine-ReLU”组合,然后第五层是Affine层,最后由Softmax层输出最终结果。
不了解Softmax的可以看看让人头大的激活函数:输出层的激活函数softmax

而CNN是什么样的结构呢?
在这里插入图片描述
如上图,CNN中新增了Convolution层和Pooling层。CNN的层的连接顺序是“Convenient-ReLU-(Pooling)”(Pooling层有时会被省略)。这里可以理解为之前的“Affine-ReLU”连接被替换成了“Convenient-ReLU-(Pooling)”连接。另外在最后输出层中使用“Affine-Softmax”组合也是比较常见的。

2.卷积层

CNN中出现了一些特有的术语,比如填充、步幅等。此外,各层中传递的数据是有形状的数据(如,三维数据),这与之前的全连接层网络不同,所以我在刚开始接触时很难理解,接下来我会详细的讲解CNN中使用的卷积层的结构。

2.1全连接层存在的问题

之前介绍的全连接的神经网络中使用了全连接层(Affine层)。在全连接层中,相邻层的神经元全部连接在一起,输出数量可以随意。
但是全连接层就存在数据的形状被忽略了。举个例子:输入数据时图像时,图像通常是高,长,通道方向上的三维形状。但是,向全连接层输入时,需要将三维数据拉平为一维数据。图像是三维形状,这个形状中应该含有重要的空间信息。比如,在空间上临近的像素为相似的值、RGB的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,三维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以三维数据的形式接受输入数据,并同样以三维数据的形式输出至下一层。所以在CNN中,可以正确理解图像等具有形状的数据。

2.2卷积运算

在这里插入图片描述
相信看了这个图就会明白卷积运算吧。卷积运算以一定间隔滑动滤波器的窗口并应用。这里所说的窗口是指上图中3X3的部分。将各个位置上滤波器的元素和输入的相应元素相乘,然后在求和。然后将这个结果保存到输出的对应位置。将这个过程在所有位置都进行一边,就可以得到卷积运算的输出。

2.3填充

在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0),这称为填充(padding),是卷积运算中经常会用到的处理。比如下图,对大小为(4,4)的输入数据应用了幅度为1的填充。“幅度为1的填充”是指用幅度为1像素的0填充周围。
在这里插入图片描述
通过填充,大小为4X4的输入数据变成了6X6的形状。然后,应用大小为3X3的滤波器,生成了大小为4X4的输出数据。这个例子中将填充数设成为了1,不够填充的值也可以为其他任意整数。

2.4步幅

上文中举例卷积运算时默认步幅为1,如果将步幅设置为2
在这里插入图片描述

结果就成了这样。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
卷积神经网络(Convolutional Neural Network,CNN)是一种常用于像、语音处理等领域的深度学习模型。卷积层CNN至关重要的一个层,其作用是对输入数据进行卷积操作,提取特征信息。 下面是卷积神经网络卷积全过程: 1. 输入数据CNN接受的输入数据通常是一个三维张量,分别代表数据的高度、宽度和深度(即通道数),比如一张RGB像就是高度、宽度和深度分别为$h$、$w$、$c$的三维张量。 2. 卷积核:卷积核是CNN的一个重要参数,它是一个小的二维张量,通常大小为$k_h \times k_w$,其$k_h$和$k_w$分别表示卷积核的高度和宽度,卷积核的深度与输入数据的深度相同。卷积的每一个元素都是一个可训练参数,即CNN模型会自动习到这些参数的最优值。 3. 填充(Padding):为了保持输入和输出的大小一致,通常会在输入数据的边缘进行填充操作。填充的大小为$p$,通常为1或2。如果不进行填充,则卷积操作会使得输出的大小变小。 4. 步长(Stride):卷积核在进行卷积操作时,每次移动的距离称为步长。步长的大小通常为1或2。如果步长为1,则每次移动一个像素;如果步长为2,则每次移动两个像素。 5. 卷积操作:卷积操作是将卷积核在输入数据上进行滑动,计算卷积核与输入数据对应位置的乘积,再进行求和得到输出的数值。具体来说,假设输入数据为$X$,卷积核为$K$,输出数据为$Y$,则卷积操作可以表示为: $$ Y_{i,j}=\sum_{m=0}^{k_h-1}\sum_{n=0}^{k_w-1}\sum_{c=0}^{C-1}X_{i+m,j+n,c}\cdot K_{m,n,c}+b $$ 其,$i$和$j$分别表示输出数据张量的高度和宽度坐标,$m$和$n$分别表示卷积核的高度和宽度坐标,$c$表示输入数据的深度,$C$表示输入数据的通道数,$b$是偏置项。 6. 激活函数:卷积操作后,通常需要对输出数据进行激活函数操作,比如ReLU、sigmoid等。 7. 输出数据:经过卷积操作和激活函数后,得到输出数据,其大小与输入数据相同,但深度可能会有所改变。 以上就是卷积神经网络卷积全过程。在实际应用,通常会有多个卷积层以及其他类型的层组合在一起,形成一个完整的深度神经网络模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值