2018-06-26

手寫數(shù)字識別卷積神經(jīng)網(wǎng)絡(luò)版


參考代碼:

import numpy
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D
from keras.utils import np_utils
from keras import backend as K   # backend 是一個(gè)后端引擎绣张,主要有三種:Theano/Tensorflow/CNTK
K.set_image_dim_ordering('th') # th與tf的區(qū)別就是參數(shù)填寫位置的區(qū)別: th(28,28,3), tf(3,28,28) 【3代表通道數(shù)蝗柔,其他兩個(gè)參數(shù)代表圖片像素大小】
# 隨機(jī)種子確保結(jié)果可再現(xiàn)
seed = 7
numpy.random.seed(seed)
# 加載數(shù)據(jù)
(X_train, y_train), (X_test, y_test) = mnist.load_data() # X_train 代表一張圖片讨永,y_train 代表圖片對應(yīng)的數(shù)字;X_test 代表一張圖片,y_test 代表圖片對應(yīng)的數(shù)字

# 重新改變大小為: [樣本數(shù)目][通道數(shù)][圖片寬][圖片高]
X_train = X_train.reshape(X_train.shape[0], 1, 28, 28).astype('float32')
X_test = X_test.reshape(X_test.shape[0], 1, 28, 28).astype('float32')
# 將灰度值0-255范圍歸一化映射為0-1之間
X_train = X_train / 255
X_test = X_test / 255

# 模型的輸出是對每個(gè)類別的打分預(yù)測,對于分類結(jié)果從0-9的每個(gè)類別都有一個(gè)預(yù)測分值,表示將模型輸入預(yù)測為該類的概率大小侦锯,概率越大可信度越高。
# 由于原始的數(shù)據(jù)標(biāo)簽是0-9的整數(shù)值秦驯,通常將其表示成0ne-hot向量。如第一個(gè)訓(xùn)練數(shù)據(jù)的標(biāo)簽為5挣棕,one-hot表示為[0,0,0,0,0,1,0,0,0,0]译隘。
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1] # y_test.shape(10000,10)
# 定義模型函數(shù)
def baseline_model():
    # 創(chuàng)建模型
    model = Sequential()
    # 設(shè)置模型參數(shù)
    model.add(Conv2D(32, (5, 5), input_shape=(1, 28, 28), activation='relu')) # 32個(gè)filter ,每個(gè)filter大小為5 x 5;單通道洛心,圖片大小28 x 28
    model.add(MaxPooling2D(pool_size=(2, 2))) # 最大池化矩陣 2 x 2固耘,池化的最主要作用就是壓縮數(shù)據(jù)和參數(shù)。
    model.add(Dropout(0.3))  # 控制需要斷開的鏈接的比例词身,可以減輕過擬合現(xiàn)象厅目,一般設(shè)為0.3或者0.5。
    model.add(Flatten())# Flatten層用來將輸入“壓平”法严,即把多維的輸入一維化损敷,常用在從卷積層到全連接層的過渡。
    model.add(Dense(128, activation='relu')) # 全連接層128個(gè)單元
    model.add(Dense(num_classes, activation='softmax')) # 輸出層只能為10個(gè)單元
    # 編譯模型
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) #選擇了交叉編譯深啤,Adam優(yōu)化器
    return model
# 開始編譯模型
model = baseline_model()
# 訓(xùn)練模型
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=200, verbose=2)

# 評估模型
loss , scores = model.evaluate(X_test, y_test, verbose=1)

# 輸出Loss值和評分
print("Loss: ", loss)
print("scores: ", scores)
Train on 60000 samples, validate on 10000 samples
Epoch 1/10
 - 6s - loss: 0.2400 - acc: 0.9314 - val_loss: 0.0837 - val_acc: 0.9740
Epoch 2/10
 - 6s - loss: 0.0779 - acc: 0.9765 - val_loss: 0.0482 - val_acc: 0.9843
Epoch 3/10
 - 6s - loss: 0.0560 - acc: 0.9827 - val_loss: 0.0431 - val_acc: 0.9861
Epoch 4/10
 - 6s - loss: 0.0433 - acc: 0.9866 - val_loss: 0.0423 - val_acc: 0.9857
Epoch 5/10
 - 6s - loss: 0.0363 - acc: 0.9883 - val_loss: 0.0333 - val_acc: 0.9884
Epoch 6/10
 - 6s - loss: 0.0301 - acc: 0.9906 - val_loss: 0.0310 - val_acc: 0.9893
Epoch 7/10
 - 6s - loss: 0.0246 - acc: 0.9922 - val_loss: 0.0316 - val_acc: 0.9888
Epoch 8/10
 - 6s - loss: 0.0232 - acc: 0.9927 - val_loss: 0.0296 - val_acc: 0.9896
Epoch 9/10
 - 6s - loss: 0.0195 - acc: 0.9937 - val_loss: 0.0284 - val_acc: 0.9906
Epoch 10/10
 - 6s - loss: 0.0164 - acc: 0.9949 - val_loss: 0.0282 - val_acc: 0.9911
10000/10000 [==============================] - 1s 85us/step
Loss:  0.0281819745783
scores:  0.9911
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拗馒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子溯街,更是在濱河造成了極大的恐慌诱桂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呈昔,死亡現(xiàn)場離奇詭異挥等,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)堤尾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門肝劲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事涡相≌懿矗” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵催蝗,是天一觀的道長切威。 經(jīng)常有香客問我,道長丙号,這世上最難降的妖魔是什么先朦? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮犬缨,結(jié)果婚禮上喳魏,老公的妹妹穿的比我還像新娘。我一直安慰自己怀薛,他們只是感情好刺彩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枝恋,像睡著了一般创倔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上焚碌,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天畦攘,我揣著相機(jī)與錄音,去河邊找鬼十电。 笑死知押,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鹃骂。 我是一名探鬼主播台盯,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畏线!你這毒婦竟也來了爷恳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤象踊,失蹤者是張志新(化名)和其女友劉穎温亲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杯矩,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栈虚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了史隆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魂务。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粘姜,到底是詐尸還是另有隱情鬓照,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布孤紧,位于F島的核電站豺裆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏号显。R本人自食惡果不足惜臭猜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望押蚤。 院中可真熱鬧蔑歌,春花似錦、人聲如沸揽碘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雳刺。三九已至帅矗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煞烫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工累颂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滞详,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓紊馏,卻偏偏與公主長得像料饥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子朱监,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容