Keras如何构造简单的CNN网络

来源:互联网 发布:网络推广公司wtg168 编辑:程序博客网 时间:2024/05/29 02:53
1. 导入各种模块

基本形式为:

import 模块名

from 某个文件 import 某个模块

 

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

训练集数据data

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

 

训练集的标签

 

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

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

[python] view plain copy
  1. label = np_utils.to_categorical(label, numClass  

此时的label变为了如下形式 

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

  

4. 建立CNN模型

以下图所示的CNN网络为例

[python] view plain copy
  1. #生成一个model  
  2. model = Sequential()  
  3.   
  4. #layer1-conv1  
  5. model.add(Convolution2D(1633, border_mode='valid',input_shape=data.shape[-3:]))  
  6. model.add(Activation('tanh'))#tanh  
  7.   
  8. # layer2-conv2  
  9. model.add(Convolution2D(3233, border_mode='valid'))  
  10. model.add(Activation('tanh'))#tanh  
  11.   
  12. # layer3-conv3  
  13. model.add(Convolution2D(3233, border_mode='valid'))  
  14. model.add(Activation('tanh'))#tanh  
  15.   
  16. # layer4  
  17. model.add(Flatten())  
  18. model.add(Dense(128, init='normal'))  
  19. model.add(Activation('tanh'))#tanh  
  20.   
  21. # layer5-fully connect  
  22. model.add(Dense(numClass, init='normal'))   
  23. model.add(Activation('softmax'))<br><br>  
#  
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



FROM:http://blog.csdn.net/tina_ttl/article/details/51034821