keras中Convolution1D的使用(CNN情感分析yoom例子四)

这篇文章主要说明两个东西,一个是Convolution1D的介绍,另一个是model.summary()的使用。

首先我先说下model.summary(),此方法可以打印出模型的信息,读者可以查看每层输出内容。

接下来就说下Convolution1D的使用了,Convolution1D一维卷积,主要用于过滤一维输入的相邻元素,官方文档是这样的

1
keras.layers.convolutional.Convolution1D(nb_filter, filter_length, init = 'glorot_uniform' , activation = None , weights = None , border_mode = 'valid' , subsample_length = 1 , W_regularizer = None , b_regularizer = None , activity_regularizer = None , W_constraint = None , b_constraint = None , bias = True , input_dim = None , input_length = None )

然后官方给出的事例是这样的

复制代码
# apply a convolution 1d of length 3 to a sequence with 10 timesteps,
# with 64 output filters
model = Sequential()
model.add(Convolution1D(64, 3, border_mode='same', input_shape=(10, 32)))
# now model.output_shape == (None, 10, 64)

# add a new conv1d on top
model.add(Convolution1D(32, 3, border_mode='same'))
# now model.output_shape == (None, 10, 32)
复制代码

然后用print(model.summary())输出是这样的:

 

   下面我就围绕着上面代码简单介绍下:当把该层作为首层时,需要说明 input_shape

input_shape=(10, 32)简而言之就是10个32维的向量了,nb_filter : 卷积核的数量,也是输出的维度。filter_length : 每个过滤器的长度。
首先我们先看第一个卷积层,输出shape很容易理解,因为有64个卷积核,所以输出也就是64,接下来我们看下参数:其实可以这么理解,我们把例子中(10,32)的信号进行1D卷积相当于对其进行卷积核为(filter_length, 32)的2D卷积

为什么是10X64??

原10X32  加pad变为12X32,经过一个3X32的卷积核,变成10个数字组成的特征图。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值