Keras如何构造简单的CNN网络

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keras如何构造简单的CNN网络相关的知识,希望对你有一定的参考价值。

1. 导入各种模块

基本形式为:

import 模块名

from 某个文件 import 某个模块

 

2. 导入数据(以两类分类问题为例,即numClass = 2)

训练集数据data

技术分享

可以看到,data是一个四维的ndarray

技术分享

技术分享

 

训练集的标签

技术分享

技术分享

 

3. 将导入的数据转化我keras可以接受的数据格式 

keras要求的label格式应该为binary class matrices,所以,需要对输入的label数据进行转化,利用keras提高的to_categorical函数

label = np_utils.to_categorical(label, numClass

此时的label变为了如下形式 

技术分享

(注:PyCharm无法显示那么多的数据,所以下面才只显示了1000个数据,实际上该例子所示的数据集有1223个数据)

技术分享  技术分享

4. 建立CNN模型

以下图所示的CNN网络为例

技术分享

#生成一个model
model = Sequential()

#layer1-conv1
model.add(Convolution2D(16, 3, 3, border_mode=‘valid‘,input_shape=data.shape[-3:]))
model.add(Activation(‘tanh‘))#tanh

# layer2-conv2
model.add(Convolution2D(32, 3, 3, border_mode=‘valid‘))
model.add(Activation(‘tanh‘))#tanh

# layer3-conv3
model.add(Convolution2D(32, 3, 3, border_mode=‘valid‘))
model.add(Activation(‘tanh‘))#tanh

# layer4
model.add(Flatten())
model.add(Dense(128, init=‘normal‘))
model.add(Activation(‘tanh‘))#tanh

# layer5-fully connect
model.add(Dense(numClass, init=‘normal‘)) 
model.add(Activation(‘softmax‘))

#  
sgd = SGD(l2=0.1,lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss=‘categorical_crossentropy‘, optimizer=sgd,class_mode="categorical")

5. 开始训练model

利用model.train_on_batch或者model.fit

  

以上是关于Keras如何构造简单的CNN网络的主要内容,如果未能解决你的问题,请参考以下文章

使用Python,Keras和TensorFlow训练第一个CNN

小白学习keras教程六基于CIFAR-10数据集训练CNN-RNN神经网络模型

基于CNN卷积神经网络的TensorFlow+Keras深度学习的人脸识别

如何在 Keras 中使用 CNN 处理马萨诸塞州道路数据集?

在 Keras for Python 中选择测试和训练集

如何在 Keras 中使用预训练的 CNN 实现连体网络?