keras实战-入门之一维卷积
一维卷积
最近接触到一维卷积,最开始的时候觉得应该很简单,然后网上看了几个例子,参数很奇怪,特别是模型的维度搞不明白,不知道怎么来的,看API也不太明白,可能我太笨了,所以自己琢磨了半天,才稍微弄了点明白,今天不怎么讲代码,就讲点原理吧。
二维卷积比较常见,基本上一个图片的样本的维度是(高,宽,通道),而一维是(高,宽),而对于句子来说,比如I am Jack
,三个单词,但是单词一般会变成词向量,比如简单点3维的,我就三个词,就3维,那这样,这个一维的样本就是(3,3),高就是有几个单词,宽就是每个单词的维度。同理,如果是原始语音信号,是采样得到的,比如采样3秒,每秒16000的采样率,这样就得到48000个采样点,每个点对应一个幅度值,这里的高就是48000,宽就是幅度值,因为就是个值,是一维向量,所以样本就是(48000,1).这个应该好理解吧。
网上找了个图,最简单的,样本是(3,4,1,5,6),卷积核(-2,2,1),步长是1,直观看下吧:
卷积的过程我拿个简单的例子来说下:
输入是(64,1),经过两次卷积核最大池化后变成了(1, 16),看上去好神奇,有点反直觉啊,具体来看看吧。
inp = Input(shape=(64,1))
x = Conv1D(32, (9), activation='relu')(inp)
x = MaxPool1D((4))(x)
x = Conv1D(16, (9), activation='relu')(x)
x = MaxPool1D((4))(x)
model = Model(inp, x)
结构如下:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_6 (InputLayer) (None, 64, 1) 0
_________________________________________________________________
conv1d_22 (Conv1D) (None, 56, 32) 320
_________________________________________________________________
max_pooling1d_14 (MaxPooling (None, 14, 32) 0
_________________________________________________________________
conv1d_23 (Conv1D) (None, 6, 16) 4624
_________________________________________________________________
max_pooling1d_15 (MaxPooling (None, 1, 16) 0
=================================================================
Total params: 4,944
Trainable params: 4,944
Non-trainable params: 0
_________________________________________________________________
我来解释下维度的变化:
首先输入层(None, 64, 1) 表示样本数未定,但是每个样本是(64,1)是我们设定的。
经过conv1d_22 (Conv1D) 层得到(None, 56, 32),32是因为我们用了32个过滤器提取特征.。
56是因为卷积长度是9,默认步子是1,也就是每次拿长度为9的格子,走一格走遍64个,做向量点乘,得到一个值,直到走到最后一个能包含整个滤波器为止,剩下多出来的不要了。比如最开始是0-8和滤波器做点积,然后1-9,2-10,3-11一直到55-63,剩下的56-63小于9所以不要了。因此总共是55-0+1=56个,所以维度是(None, 56, 32) ,下面的也同理。
至于最大池化MaxPool1D就是等于除法,取整,比如 MaxPool1D((4))就是把刚才剩下的56/4刚好是14,但是最后的池化是6/4,取整是1,刚还最后剩下 (None, 1, 16)。如果不明白的话可以自己动手画画,我也是这么弄明白的,其实跟二维卷一样,就是好像看起来不是那么明显。
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自网络,侵删。