CNN卷积神经网络是怎么衔接到全连接dense层的。

4 篇文章 0 订阅
1 篇文章 1 订阅

输入的维度确定

一般CNN处理图像的时候输入图像的两个维度都是确定的,这是典型的处理方式

2维卷积中采用和feature maps尺寸一样的卷积核

此图文摘自博客,该博客也详细的介绍了卷积神经网络
https://www.cnblogs.com/wj-1314/p/9754072.html
在这里插入图片描述

1维卷积在输入数据维度确定时的一种方法

该文章介绍来自
https://blog.goodaudience.com/introduction-to-1d-convolutional-neural-networks-in-keras-for-time-sequences-3a7ff801a2cf
该文章也对一维卷积有比较好的诠释,图中最后完成pooling后,数据只剩下一维队列,可以直接与dense层衔接。
在这里插入图片描述

输入的维度不确定

用CNN处理时间序列的时候,如语音的频谱,feature是确定的,但是time是动态的,这种情况的卷积方式和全连接方式也有不一样的地方。

1维卷积在输入数据时间维度不确定时的一种方法

下图是自己画的示意图,丑了点。输入数据有三个维度,一维是时间维度,一维是batch size,还有一维是feature dimension,语音中经常采用mfcc的39维数据来表征,这里就假设39维。假设只经过一层卷积和池化。为了方便起见,设batch size=1。从图中可以看出经过1维卷积核的处理,数据并没有像2维卷积分层(卷积完仍然是一维),但原来的维度被扩展到卷积核的深度(128)。1维池化也只是在时间轴上对维度产生影响,128维度没有变化。可以在keras的summary看到

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
speechdata (InputLayer)      [(None, None, 39)]        0         
_________________________________________________________________
reshape (Reshape)            (None, None, 39)          0         
_________________________________________________________________
conv1d (Conv1D)              (None, None, 128)         75008     
_________________________________________________________________
batch_normalization (BatchNo (None, None, 128)         512       
_________________________________________________________________
max_pooling1d (MaxPooling1D) (None, None, 128)         0         
_________________________________________________________________

在这里插入图片描述
输出到dense层,将每个时刻的128维数据做dense(softmax)生成输出概率。

2维卷积在输入数据时间维度不确定时的一种方法

下图没有 画 pooling,但pooling会影响二位卷积后每层数据的维度,到最后与dense衔接的时候,数据量是 last-cnn-depth * input-dimension/(poolingsize * stride)。最简单的办法是数据整个型,最后平铺的尺寸是feature_dim * feature_num。平铺完毕,就可以做全连接层了。
在这里插入图片描述值得注意的是这种卷积是按照时间切片进行的,直接通过reshape方法平铺,然后进行全连接映射,或者再加一层一维卷积,避免平铺带来的feature相关性的局限。但如果进入一维卷积前的feature维度太大,算法引入的参数就会更多,参数量是number of kernel depth 倍的全连接层的参数个数。

其他方法

GAP方法

另外在network· in network还提出了一种叫做Global average Pooling的方法,论文提出了将最后的feature直接平均池化平铺,输出softmax,这样就完全避免了全连接层。

在这里插入图片描述
在网络又找了一个彩图,更加直观的说明了这种池化和全连接to softmax的过程。
在这里插入图片描述
在时间序列处理的时候,gap方法可能需要变化一下,将每个feature 一个时间切片(feature number)做一个average pooling,这样就迅速的降低了数据维度,使得平铺层的维度和feature的维度一致了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值