CNN_卷积神经网络初识(1)

导语

机器学习中,当我们的数据是图片,或者说是矩阵时,要怎么样进行处理呢?其实,图片是我们表象所看到的,其本质也是一个或多个矩阵。如果我们把矩阵按照行或者列,拉成一个长向量,那就可以采用DNN的方法处理了,如下图所示:
Cat
如左上图所示,这是一张 1000 × 1000 1000\times1000 1000×1000 维的照片,而且是彩色照片,所以有R,P,G三个通道,那么这张照片的数据量是 3 6 3^6 36,如果我们的第一层隐藏层有100个单元,数据量将变成 3 8 3^8 38,这个量级,对于资源消耗是巨大的。
为了降低资源的消耗,我们需要降低数据的量级,怎么降低呢?从图片层面角度考虑,我们可以用几何方式对图像进行变换,提取某些对数据具有意义的特征。比如可以对图像进行模糊(blur),锐化(sharpen),提取垂直边界等。
以图像模糊化举例:
cat_blur
上图图像模糊化是怎么做到的呢?首先我们需要了解一下几个概念:
卷积核:即kernel,表示与图片矩阵计算的一个自定义矩阵;
卷积核大小: 即ksize,表示卷积核的大小,可以是1,2,3,4…
移动步长:即stride,表示卷积核在原图一次移动的步长,可以是1,2,3,4
补丁:即padding,表示在经卷积核输出的矩阵周围填充0
注:一般在ksize和stride固定情况下,输出矩阵的形状可以通过如下公式得出:
W o u t = ( W − K ) + 2 P ) / S + 1 W_{out}=(W - K )+ 2P )/S + 1 Wout=(WK)+2P)/S+1
上图中,首先我们定义一个卷积核,如图坐下,我们定义了一个 3 × 3 3\times3 3×3的矩阵。使其沿着图片矩阵滑动,分别求出每次移动后对应位置相乘后的和,输出一个新的矩阵。即表示做了依次图片的模糊化处理。
image_metric

卷积层

从上面例子中,我们可以看到一个卷积核可以得到一次输出。如果一次使用多个卷积核,就会产生多个输出。在DNN中,一般我们会加多个隐藏层。每一层都有多个输出节点。假象我们是否可以将每个卷积核的结果作为一个隐藏层的节点,那么这一层隐藏层也可以被称为卷积隐藏层。我们可以通过下面例子深入理解:
Converlution
上面这个图就是形成卷积层的过程。输入时一个 32 × 32 × 3 32\times32\times3 32×32×3的RGB通道矩阵,通过6个 5 × 5 5\times5 5×5 的卷积核得到 28 × 28 × 6 28\times28\times6 28×28×6 的输出。具体解读图片如下:

  • 输入图片时RGB-3通道的,深度为3。所以卷积核的深度也为3,为了能让卷积核跟图片进行滑动,我们定义卷积核的深度也为3,大小为 5 × 5 5\times5 5×5
  • 通过上面卷积输出形式的公式,一个 32 × 32 × 3 32\times32\times 3 32×32×3的图片经过 5 × 5 × 3 5\times5\times3 5×5×3的卷积核计算,得到一个 28 × 28 28\times28 28×28的输出。
  • 一共有6个卷积核,所以我们的最终输出是 6 × 28 × 28 6\times28\times28 6×28×28
    如果我们把输出作为一层隐藏层,则输出如下图所示:
    Convenlution
    上图所以激活函数可以使用ReLu激活函数。

池化层

上面我们使用卷积层作为一层隐藏层,但是计算量还是比较大的。现在,有一种比卷积层速度更快的隐藏层构建方式----池化层。它是采用下采样的方式,快速的减少输入的大小,同时不丢失图片重要信息。池化层一般有两种表现方式:

  • max pooling (最大池化层)
  • average pooling (平均池化层)
    接下来,我们使用max pooling 举例:
    max_pooling
    如上图所示,我们有一个 4 × 4 4\times4 4×4的图片矩阵,现在我们需要构建一个 2 × 2 2\times2 2×2的矩阵核,但是并没有数据,然后让矩阵核沿着图片矩阵滑动,每一次滑动,把每一次矩阵中的最大值作为输出。同理,average pooling 就是把每次矩阵中的平均值作为输出。

卷积神经网络

CNN,即Convolutional Neural Network的缩写,上面我们解读的卷积层核池化层的概念,那么CNN,就是一个卷积层+池化层+卷积层+池化层…一个不断循环往复的神经网络结构。
最经典的CNN结构,是由Yann LeCun提出的用于手写体数字识别的卷积神经网络结构。如下图所示:
mnist_cnn
上图神经网络结构被叫做LeNet-5,它由2个卷积层+1个池化层+3个全连接层构成。全连接层和卷积池化层有啥区别呢?卷积和池化层都是全部运算,全连接层是所有数据都参与运算。
关于卷积神经网络最基础的概念先介绍到这里
学习来源:深度学习与实践

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值