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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM