Keras-mnist

Keras-mnist111

日期:2016 /06 /03 15:15:52

版本 python ??

!/usr/bin/python

-- coding:utf-8 --

fromfutureimport print_function

import numpy as np

np.random.seed(1337) # for reproducibility

from keras.datasets import mnist

from keras.models import Sequential

from keras.layers.core import Dense, Dropout, Activation

from keras.optimizers import SGD, Adam, RMSprop

from keras.utils import np_utils

batch_size = 128

nb_classes = 10

nb_epoch = 1

初始化一個(gè)模型

model = Sequential()

輸入向量是784維度的沙热,第一個(gè)影藏層是1000個(gè)節(jié)點(diǎn)庶近,init代表的是鏈接矩陣中的權(quán)值初始化

'''

init 初始化參數(shù):

uniform(scale=0.05) :均勻分布,最常用的。Scale就是均勻分布的每個(gè)數(shù)據(jù)在-scale~scale之間。此處就是-0.05~0.05。scale默認(rèn)值是0.05;

lecun_uniform:是在LeCun在98年發(fā)表的論文中基于uniform的一種方法。區(qū)別就是lecun_uniform的scale=sqrt(3/f_in)娘汞。f_in就是待初始化權(quán)值矩陣的行。

normal:正態(tài)分布(高斯分布)夕玩。

identity :用于2維方陣你弦,返回一個(gè)單位陣

orthogonal:用于2維方陣,返回一個(gè)正交矩陣燎孟。

zero:產(chǎn)生一個(gè)全0矩陣禽作。

glorot_normal:基于normal分布,normal的默認(rèn) sigma^2=scale=0.05缤弦,而此處sigma^2=scale=sqrt(2 / (f_in+ f_out))领迈,其中,f_in和f_out是待初始化矩陣的行和列碍沐。

glorot_uniform:基于uniform分布狸捅,uniform的默認(rèn)scale=0.05,而此處scale=sqrt( 6 / (f_in +f_out)) 累提,其中尘喝,f_in和f_out是待初始化矩陣的行和列。

he_normal:基于normal分布斋陪,normal的默認(rèn) scale=0.05朽褪,而此處scale=sqrt(2 / f_in),其中无虚,f_in是待初始化矩陣的行缔赠。

he_uniform:基于uniform分布,uniform的默認(rèn)scale=0.05友题,而此處scale=sqrt( 6 / f_in)嗤堰,其中,f_in待初始化矩陣的行度宦。

'''

model.add(Dense(1000, input_dim=784, init='glorot_uniform'))

model.add(Activation('relu')) # 激活函數(shù)是tanh

model.add(Dropout(0.5)) # 采用50%的dropout

第二個(gè)隱藏層是500個(gè)節(jié)點(diǎn)

model.add(Dense(500, init='glorot_uniform'))

model.add(Activation('relu'))

model.add(Dropout(0.5))

第三層是輸出層踢匣,輸出結(jié)果是10個(gè)類別告匠,所以維度是10

model.add(Dense(10, init='glorot_uniform'))

model.add(Activation('softmax')) # 最后一層用softmax

設(shè)定參數(shù)

lr表示學(xué)習(xí)速率,decay是學(xué)習(xí)速率的衰減系數(shù)(每個(gè)epoch衰減一次)离唬,momentum表示動(dòng)量項(xiàng)后专,Nesterov的值是False或者True,表示使不使用Nesterov momentum输莺。

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9,nesterov=True)

loss代表的是損失函數(shù), optimizer代表的是優(yōu)化方法, class_mode代表

使用交叉熵作為loss函數(shù)戚哎,就是熟知的log損失函數(shù)

model.compile(loss='categorical_crossentropy',optimizer=sgd, class_mode='categorical')

使用Keras自帶的mnist工具讀取數(shù)據(jù)(第一次需要聯(lián)網(wǎng))

(X_train, y_train), (X_test, y_test) = mnist.load_data()

由于輸入數(shù)據(jù)維度是(num, 28, 28),這里需要把后面的維度直接拼起來(lái)變成784維

X_train = X_train.reshape(X_train.shape[0],X_train.shape[1]X_train.shape[2])

X_test = X_test.reshape(X_test.shape[0], X_test.shape[1]X_test.shape[2])

X_train = X_train.astype('float32')

X_test = X_test.astype('float32')

X_train /= 255

X_test /= 255

print(X_train.shape[0], 'train samples')

print(X_test.shape[0], 'test samples')

這里需要把index轉(zhuǎn)換成一個(gè)one hot的矩陣

Y_train = (np.arange(10) == y_train[:,None]).astype(int)

Y_test = (np.arange(10) == y_test[:,None]).astype(int)

'''

convert class vectors to binary class matrices

Y_train = np_utils.to_categorical(y_train, nb_classes)

Y_test = np_utils.to_categorical(y_test, nb_classes)

'''

開(kāi)始訓(xùn)練模闲,這里參數(shù)比較多建瘫。batch_size就是batch_size崭捍,nb_epoch就是最多迭代的次數(shù)尸折, shuffle就是是否把數(shù)據(jù)隨機(jī)打亂之后再進(jìn)行訓(xùn)練

verbose是屏顯模式,官方這么說(shuō)的:verbose: 0 for no logging to stdout, 1 for progress bar logging, 2 for one log line per epoch.

就是說(shuō)0是不屏顯殷蛇,1是顯示一個(gè)進(jìn)度條实夹,2是每個(gè)epoch都顯示一行數(shù)據(jù)

show_accuracy就是顯示每次迭代后的正確率

validation_split就是拿出百分之多少用來(lái)做交叉驗(yàn)證

model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,shuffle=True, verbose=1, show_accuracy=True, validation_split=0.3)

print ('test set')

score = model.evaluate(X_test, Y_test, batch_size=200,show_accuracy=True, verbose=1)

print('Test score:', score[0])

print('Test accuracy:', score[1])

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粒梦,隨后出現(xiàn)的幾起案子亮航,更是在濱河造成了極大的恐慌,老刑警劉巖匀们,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缴淋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泄朴,警方通過(guò)查閱死者的電腦和手機(jī)重抖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祖灰,“玉大人钟沛,你說(shuō)我怎么就攤上這事【址觯” “怎么了恨统?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)三妈。 經(jīng)常有香客問(wèn)我畜埋,道長(zhǎng),這世上最難降的妖魔是什么畴蒲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任悠鞍,我火速辦了婚禮,結(jié)果婚禮上饿凛,老公的妹妹穿的比我還像新娘狞玛。我一直安慰自己软驰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布心肪。 她就那樣靜靜地躺著锭亏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪硬鞍。 梳的紋絲不亂的頭發(fā)上慧瘤,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音固该,去河邊找鬼锅减。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伐坏,可吹牛的內(nèi)容都是我干的怔匣。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼桦沉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼每瞒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起纯露,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剿骨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后埠褪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體浓利,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年钞速,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贷掖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡玉工,死狀恐怖羽资,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情遵班,我是刑警寧澤屠升,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站狭郑,受9級(jí)特大地震影響腹暖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翰萨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一脏答、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦殖告、人聲如沸阿蝶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)羡洁。三九已至,卻和暖如春爽丹,著一層夾襖步出監(jiān)牢的瞬間筑煮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工粤蝎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留真仲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓初澎,卻偏偏與公主長(zhǎng)得像秸应,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谤狡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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