CNN初探

跟LSTM初探一样,这次依旧选择利用Keras来构建CNN。
基本的构建代码如下:

def CNN_model(trainArray, testArray, trainLabels, testLabels):
    model = Sequential()

    model.add(Convolution1D(nb_filter = nb_filters, filter_length = filter_length, border_mode = "valid", activation = "relu", input_shape = (maxlen, embedding_dims), subsample_length = 1))   

    model.add(MaxPooling1D(pool_length = 2))

    model.add(Flatten())

    model.add(Dense(hidden_dims, activation = "relu"))
    model.add(Dropout(0.25))

    model.add(Dense(1, activation = "sigmoid"))

    model.compile(loss = "binary_crossentropy", optimizer = "rmsprop", class_mode = "binary")

    hist = model.fit(trainArray, trainLabels, batch_size = batch_size, nb_epoch = nb_epoch, verbose = 2, validation_data = (valArray, valLabels))

    preLabels = model.predict_classes(testArray, batch_size = batch_size, verbose = 2)

Convolution1D用于定义一个卷积操作,1D代表过滤一维输入的相邻元素。nb_filter代表卷积核的数目,filter_length 代表每次参与卷积的词数,border_mode 代表卷积的模式,有valid跟same两种,activation代表激励函数,input_shape代表输入数据的形状,CNN中输入数据的第一个维度为词数,subsample_length代表每次卷积操作的步长。
MaxPooling1D用于定义一个池化操作,也就是所谓的子采样。pool_length代表采样间隔。
Flatten用于将多维的输入转换为一维。
其他的操作跟构建LSTM时类似。

我用一张图大概解释了一下整个过程,字丑勿喷。
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值