所谓CNN卷积神经网络为何物

关于全连接层见(正在写)

CNN神经网络:

网络结构分为卷积层,池化层,全连接层:
卷积是对图像进行卷积操作,目的是为了提取图像特征
池化是为了压缩图像尺寸,进一步提取特征
全连接层则是将特征线性处理,方便计算
网络内部的计算图如下:
conv----relu----maxpool----conv----relu----maxpool----view----linear----relu----linear----relu----linear----mseloss----loss
其中relu是激活函数,激活函数的目的是为神经网络引入非线性变化,详见这篇文章

卷积

对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用。如图所示,将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算),然后,将这个结果保存到输出的对应位置。将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。
卷积

填充

填充

在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0等),这称为填充(padding),是卷积运算中经常会用到的处理。如图,对大小为(4, 4)的输入数据应用了幅度为1的填充。“幅度为1的填充”是指用幅度为1像素的0填充周围。

滤波器(卷积核)

将卷积核与输入数据卷积得到了一个二维数组,但一个输入数据可以有多次FN次卷积,这样就得到了一个三维数组。
卷积

批处理

如果加上输入通道数C就得到了四维数组(FN,C,H,W),在不同层中以相同的四维格式传递数组,这就是批处理。

池化层

池化是缩小高、长方向上的空间的运算。比如,如图所示,进行将
2 × 2的区域集约成1个元素的处理,缩小空间大小。
池化
一般来说,池化的窗口大小会和步幅设定成相同的值。比如,3 × 3的窗口的步幅会设为3,4 × 4的窗口的步幅会设为4
图中是最大池化maxpool,除了Max池化之外,还有Average池化等。相对于Max池化是从目标区域中取出最大值,Average池化则是计算目标区域的平均值。
在图像识别领域,主要使用Max池化

im2col

im2col

即imgtocolumn,图像到矩阵,
im2col会把输入数据展开以适合滤波器(权重)

im2col会将每个卷积核大小的窗口都拓展成一列,拓展方式是将窗口从左上角到右下角逐行展开。这样,原本需要在每个窗口进行的卷积运算就变成了一个大矩阵(由所有展开的列向量组成)和卷积核展开成的列向量之间的乘法运算。这样一来,虽然会增加内存,但可以利用高度优化的矩阵运算库,如BLAS库,来加快计算速度。

代码

如果构建一个简单的CNN神经网络代码如下:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值