CNN初探
2016-04-15 20:08
405 查看
跟LSTM初探一样,这次依旧选择利用Keras来构建CNN。
基本的构建代码如下:
Convolution1D用于定义一个卷积操作,1D代表过滤一维输入的相邻元素。nb_filter代表卷积核的数目,filter_length 代表每次参与卷积的词数,border_mode 代表卷积的模式,有valid跟same两种,activation代表激励函数,input_shape代表输入数据的维度,CNN中输入数据的第一个维度为词数,subsample_length代表每次卷积操作的步长。
MaxPooling1D用于定义一个池化操作,也就是所谓的子采样。pool_length代表采样间隔。
Flatten用于将多维的输入转换为一维。
其他的操作跟构建LSTM时类似。
我用一张图大概解释了一下整个过程,字丑勿喷。
基本的构建代码如下:
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时类似。
我用一张图大概解释了一下整个过程,字丑勿喷。
相关文章推荐
- 阿里云 centos node 简单记录
- Java读取、创建xml(通过dom方式)
- 【集训队互测 2012】Middle
- Plan To Do
- 在幼儿园管理系统中,实现在线预览功能,配置FlexPaper_1.5.1_flash路径问题!
- 欢迎使用CSDN-markdown编辑器
- 2、Spring的LocalSessionFactoryBean创建过程源码分析
- html5 touch事件实现触屏页面上下滑动(一)
- Android中实现图片的自动下落与上升
- k-means确定初始中心值的方法
- Matlab读取音频数据
- iOS小技巧 - 图片无损拉伸的三个方法
- python错误处理
- 算法导论题解索引
- 转 path设置方式
- iOS 7 开启侧滑效果
- Java学习笔记(五)
- TortoiseSVN回滚到历史版本并用Jenkins部署
- 软考中高项学员:2016年3月16日作业 项目整体管理及范围管理
- SA模板