keras_CNN

本文主要講CNN(Convolutional Neural Networks)卷積神經(jīng)網(wǎng)絡(luò)在 keras 上的代碼實現(xiàn)鳞尔。 用到的數(shù)據(jù)集還是MNIST。不同的是這次用到的層比較多剑勾,導(dǎo)入的模塊也相應(yīng)增加了一些。在數(shù)據(jù)預(yù)處理部分也與之前有所不同


Demo.py

from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation, Conv2D, MaxPooling2D, Flatten
from keras.optimizers import Adam

# 加載數(shù)據(jù)集
#Keras 自身就有 MNIST 這個數(shù)據(jù)包乱陡,再分成訓(xùn)練集和測試集溶弟。x 是一張張圖片,y 是每張圖片對應(yīng)的標(biāo)簽失暂,即它是哪個數(shù)字彼宠。
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# 數(shù)據(jù)預(yù)處理
X_train = X_train.reshape(-1, 1, 28, 28)
X_test = X_test.reshape(-1, 1, 28, 28)
# 將label變?yōu)橄蛄?# 對于 y鳄虱,要用到 Keras 改造的 numpy 的一個函數(shù) np_utils.to_categorical弟塞,把 y 變成了 one-hot 的形式凭峡,即之前 y 是一個數(shù)值, 在 0-9 之間决记,現(xiàn)在是一個大小為 10 的向量摧冀,它屬于哪個數(shù)字,就在哪個位置為 1系宫,其他位置都是 0索昂。
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)


# 構(gòu)建神經(jīng)網(wǎng)絡(luò)
model = Sequential()
#添加第一個卷積層,濾波器數(shù)量為32扩借,大小是5*5椒惨,Padding方法是same即不改變數(shù)據(jù)的長度和寬帶。 
#因為是第一層所以需要說明輸入數(shù)據(jù)的 shape 潮罪,激勵選擇 relu 函數(shù)
# 卷積層一
model.add(Conv2D(32, kernel_size = (5, 5), strides = (1, 1), padding = 'same', activation = 'relu', input_shape = (1, 28, 28)))
#model.add(Convolution2D(
#    nb_filter=32,
#    nb_row=5,
#    nb_col=5,
#    border_mode='same',     # Padding method
#    dim_ordering='th',    # 采用 theano 的 input 格式  
#    input_shape=(1,         # channels
#                 28, 28,)    # height & width
#))
#model.add(Activation('relu'))
# 池化層一 pooling(池化康谆,下采樣),分辨率長寬各降低一半嫉到,輸出數(shù)據(jù)shape為(32沃暗,14,14)
model.add(MaxPooling2D(pool_size = (2, 2), strides = (1, 1), padding = 'same'))
#model.add(MaxPooling2D(
#   pool_size=(2, 2),
#    strides=(2, 2),
#    border_mode='same',    # Padding method
#))
# 卷積層二
model.add(Conv2D(64, kernel_size = (5, 5), strides = (1, 1), padding = 'same', activation = 'relu'))
# 池化層二
model.add(MaxPooling2D(pool_size = (2, 2), strides = (1, 1), padding = 'same'))
#model.add(Convolution2D(64, 5, 5, border_mode='same'))
#model.add(Activation('relu'))
#model.add(MaxPooling2D(pool_size=(2, 2), border_mode='same'))

# 全連接層一何恶,經(jīng)過以上處理之后數(shù)據(jù)shape為(64孽锥,7,7)细层,需要將數(shù)據(jù)抹平成一維惜辑,再添加全連接層1
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))

# 全連接層二,即輸出層
model.add(Dense(10))
model.add(Activation('softmax'))

# 選擇并定義優(yōu)化求解方法
adam = Adam(lr = 1e-4)

# 選擇損失函數(shù)疫赎、求解方法韵丑、度量方法,設(shè)置adam優(yōu)化方法虚缎,loss函數(shù), metrics方法來觀察輸出結(jié)果
model.compile(optimizer = adam, loss = 'categorical_crossentropy', metrics = ['accuracy'])

# 訓(xùn)練模型
model.fit(X_train, y_train, epochs = 2, batch_size = 32)

# 評估模型
loss, accuracy = model.evaluate(X_test, y_test)

print ''
print 'loss: ', loss
print 'accuracy: ', accuracy

結(jié)果:

Using TensorFlow backend.
Epoch 1/2
60000/60000 [==============================] - 55s - loss: 0.4141 - acc: 0.9234
Epoch 2/2
60000/60000 [==============================] - 56s - loss: 0.0743 - acc: 0.9770
 9920/10000 [============================>.] - ETA: 0s
loss:  0.103529265788
accuracy:  0.9711
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撵彻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子实牡,更是在濱河造成了極大的恐慌陌僵,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件创坞,死亡現(xiàn)場離奇詭異碗短,居然都是意外死亡,警方通過查閱死者的電腦和手機题涨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門偎谁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來总滩,“玉大人,你說我怎么就攤上這事巡雨∪蛴妫” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵铐望,是天一觀的道長冈涧。 經(jīng)常有香客問我,道長正蛙,這世上最難降的妖魔是什么督弓? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮乒验,結(jié)果婚禮上愚隧,老公的妹妹穿的比我還像新娘。我一直安慰自己锻全,他們只是感情好狂塘,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著虱痕,像睡著了一般睹耐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上部翘,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天硝训,我揣著相機與錄音,去河邊找鬼新思。 笑死窖梁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的夹囚。 我是一名探鬼主播纵刘,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荸哟!你這毒婦竟也來了假哎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鞍历,失蹤者是張志新(化名)和其女友劉穎舵抹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劣砍,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡惧蛹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片香嗓。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡迅腔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出靠娱,到底是詐尸還是另有隱情沧烈,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布饱岸,位于F島的核電站掺出,受9級特大地震影響徽千,放射性物質(zhì)發(fā)生泄漏苫费。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一双抽、第九天 我趴在偏房一處隱蔽的房頂上張望百框。 院中可真熱鬧,春花似錦牍汹、人聲如沸铐维。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫁蛇。三九已至,卻和暖如春露该,著一層夾襖步出監(jiān)牢的瞬間睬棚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工解幼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抑党,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓撵摆,卻偏偏與公主長得像底靠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子特铝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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