卷积神经网络CNN——学习之路TWO

3维数据的卷积运算

通道方向上有多个特征图时,会按通道进行输入数据和滤波器的卷积运算,并将结果相加。

 把三维数据表示多维数组时,书写顺序为(channel,height,width),即(C,H,W)。滤波器可以写成(C,FH,FW).对于要在通道方向拥有多个卷积运算的输出,需要用到多个滤波器(权重),通过应用FN个滤波器,输出特征图也生成了FN个。对于偏置,偏置的形状是(FN,1,  1)。

 池化层

池化是缩小高、长方向上的空间的运算,缩小空间大小。

Max池化是获取最大值的运算,如下

 除了 Max 池化之外,还有 Average 池化等。相对于 Max 池化是从目标区域中取出最大值Average 池化则是计算目标区域的平均值。在图像识别领域,主要使用 Max 池化。经过池化运算,输入数据和输出数据的通道数不会发生变化。池化对微小的位置变化具有鲁棒性(健壮)

卷积层与池化层的实现

实现卷积运算基于im2col(image to column) 展开,im2col 是一个函数,将输入数据展开以适合滤波器(权重)。对于输入数据,将应用滤波器的区域(3 维方块)横向展开为 1 列。使用im2col的实现存在消耗更多内存的缺点,但汇总成一个大的矩阵进行计算颇有益处。

 

 

转换时使用 了 NumPy transpose 函数。 transpose 会更改多维数组的轴的顺序。
池化层的实现和卷积层相同,都使用 im2col 展开输入数据。池化的情况下,在通道方向上是独立的,池化的应用区域按通道单独展开。展开之后,只需对展开的矩阵各行的最大值,并转换成合适的形状。 最大值的计算可以使用 NumPy np.max 方法,例如,np.max(x, axis=1),就可以在输入 x 的第 1 维的各个轴方向上求最大值。

 

 卷积层和池化层是图像识别中必备的模块,卷积层的滤波器会提取边缘或斑块等原始信息。

LeNet:

它有连续的卷积层和池化层(正确地讲,是只 抽选元素 ”的子采样层),最后经全连接层输出结果。激活函数使用sigmoid 函数,(现在CNN主使ReLU函数),使用子采样缩小中间数据的大小,(现在CNN的Max池化是主流)
AlexNet:

有多个卷积层和池化层,最后经由全连接层输出结果。激活函数使用ReLU,使用进行局部正规化的LRN层(对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力),使用Dropout(防止过拟合)。

总结:

1.cnn新增卷积层和池化层

2.使用im2col函数实现卷积层和池化层

3.通过CNN的可视化,可知随着层次变深,提取的信息愈加高级。

4.LenNet和AlexNet是cnn代表性网络

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值