從訓練集Label到神經網路預測的簡單思路
阿新 • • 發佈:2019-01-01
思路如下:
1. 匯入各種模組
基本形式為:
- import 模組名
這個是引入整個包,如果使用包中的某個類,需要加上模組名的限定。 - from 某個檔案 import 某個模組
這是隻引入包裡的某個類,在使用時無需新增模組名的限定。
2. 匯入資料(以兩類分類問題為例,即numClass = 2)
訓練集資料data
訓練集的標籤
3. 將匯入的資料轉化我keras可以接受的資料格式
keras要求的label格式應該為binary class matrices,所以,需要對輸入的label資料進行轉化,利用keras提供的to_categorical函式
label = np_utils.to_categorical(label, numClass)
4. 建立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'))<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
6. model預測
利用model.predict 、model.predict_on_batch 或者 model.predcit_generator