caffe初了解 --mnist

這個(gè)例子可以說(shuō)是caffe的入門之作亏狰,但里面包含的CNN知識(shí)已經(jīng)十分豐富放刨,值得入門者深深思考贡羔,會(huì)發(fā)現(xiàn)其中的很多美妙之處葵袭。

寫這篇文章來(lái)記錄自己的學(xué)習(xí)之旅涵妥。

首先這個(gè)例子的結(jié)構(gòu): ? lenet(模型)+mnist(數(shù)據(jù))


其中mnist數(shù)據(jù)主要由兩個(gè)函數(shù)處理:

1.下載二進(jìn)制文件:

???? cd caffe???? ./data/mnist/get_mnist.sh

下載下來(lái)的文件有四個(gè):


2.將這些二進(jìn)制文件轉(zhuǎn)換為caffe支持的LEVELDB或者LMDB:

? ? $./examples/mnist/create_mnist.sh


? 產(chǎn)生了兩個(gè)文件夾,都包含相應(yīng)的data和label

Lenet結(jié)構(gòu):

lenet結(jié)構(gòu)簡(jiǎn)單坡锡,但是已經(jīng)具備了一個(gè)CNN網(wǎng)絡(luò)最基本的具備的元素了蓬网。以下為它的訓(xùn)練結(jié)構(gòu):


其中窒所,圖片經(jīng)卷積后輸出大小的計(jì)算公式為:

原圖:N*N ? ?

?fliter: F*F ? ? ? ? ? ? ??

?stride:S ? ? ? ? ? ? ? ? ? ?

?padding:P

輸出的圖片大小為M*M? ? ? ? ? M= (N-F+2P/S+1

?注意這里的不適用 :不同方向上不同stride以及padding的卷積。

那么caffe是如何定義這個(gè)模型的:在caffe中模型的描述文件為example/mnist/data/lenet_train_val.prototxt帆锋,正是caffe的依賴包:protobuffer將模型的定義讀取到內(nèi)存中吵取。

我們來(lái)看一看這個(gè)文件:


很容易看懂,caffe層的定義和積木一樣锯厢,很清楚說(shuō)明上一層是什么皮官,下一層是什么,

讓我感興趣的是卷積層的定義:


其中实辑,weight的初始化使用了xavier填充器捺氢,

“Xavier”初始化方法是一種很有效的神經(jīng)網(wǎng)絡(luò)初始化方法,是由Xavier Glorot 和 Yoshua Bengio在2010提出的剪撬,第一次接觸到這個(gè)是在自編碼器的權(quán)值初始化看到的:

使用原因:

如果深度學(xué)習(xí)模型的權(quán)重初始化得太小摄乒,那么信號(hào)在每層間傳遞時(shí)將會(huì)逐漸縮小而難以產(chǎn)生作用,而如果初始化得太大残黑,那信號(hào)將在每一層傳遞時(shí)逐漸過(guò)度放大而最終發(fā)散失效馍佑。

Xavier初始化目的就為了初始化深度學(xué)習(xí)網(wǎng)絡(luò)時(shí)讓權(quán)重不大不小,具體得推導(dǎo)過(guò)程以后專門寫一篇梨水。

簡(jiǎn)單來(lái)說(shuō):主要為了使得權(quán)值的分布符合:


上面的話是lenet的基本模型拭荤,而具體訓(xùn)練的話仍需要我們另外定義的超參數(shù):

訓(xùn)練模型的超參數(shù)存于 ./example/mnist/lenet_solver.prototxt

我們來(lái)看一看里面的內(nèi)容:


首先很明顯這里使用了SGD的優(yōu)化方法,故對(duì)于每個(gè)batch冰木,loss函數(shù)應(yīng)為:

? 第一項(xiàng)為data loss 第二項(xiàng)為regulation loss

?根據(jù)dataloss的不同定義穷劈,以及正則化方式選擇的不同笼恰,展開(kāi)式子也不同踊沸。這個(gè)部分以后也會(huì)寫一篇文章來(lái)記錄下已經(jīng)學(xué)過(guò)的內(nèi)容。

SGD的最普通式子:

caffe 這里用到是:


m這里看為沖量


很有趣有人說(shuō)是受了牛頓的啟發(fā)社证,加入這個(gè)m(monentum)逼龟,為尋優(yōu)加入了慣性的影響,所以當(dāng)梯度下降的時(shí)候追葡,在誤差平面存在平坦區(qū)的時(shí)候腺律,SGD能更快學(xué)習(xí)。以后將會(huì)好好研究

另一個(gè)有趣的是學(xué)習(xí)速率的衰減策略:

這里使用的是inv宜肉,且gamma設(shè)置為0.0001匀钧,power為0.75

所用公式為:base_lr= base_lr *(1+gamma*iter)^(power)

caffe同時(shí)提供了其他的學(xué)習(xí)速率改變方法:

//? ? - fixed: always return base_lr.

//????-?step:?return?base_lr?*?gamma?^?(floor(iter?/?step))

//????-?exp:?return?base_lr?*?gamma?^?iter

//????-?inv:?return?base_lr?*?(1?+?gamma?*?iter)?^?(-?power)

//????-?multistep:?similar?to?step?but?it?allows?non?uniform?steps?defined?by

//??????stepvalue

//????-?poly:?the?effective?learning?rate?follows?a?polynomial?decay,?to?be

//??????zero?by?the?max_iter.?return?base_lr?(1?-?iter/max_iter)?^?(power)

//????-?sigmoid:?the?effective?learning?rate?follows?a?sigmod?decay

//??????return?base_lr?(?1/(1?+?exp(-gamma?*?(iter?-?stepsize))))

在matlab繪圖中得到:


可以各自選擇相應(yīng)的下降策略

訓(xùn)練開(kāi)始:

$./examples/mnist/train_lenet.sh

建立,迭代10000次谬返,下面為輸出



最后的模型快照存于caffe/examples/mnist/下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末之斯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子遣铝,更是在濱河造成了極大的恐慌佑刷,老刑警劉巖莉擒,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瘫絮,居然都是意外死亡涨冀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門麦萤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鹿鳖,“玉大人,你說(shuō)我怎么就攤上這事频鉴∷ü迹” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵垛孔,是天一觀的道長(zhǎng)藕甩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)周荐,這世上最難降的妖魔是什么狭莱? 我笑而不...
    開(kāi)封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮概作,結(jié)果婚禮上腋妙,老公的妹妹穿的比我還像新娘。我一直安慰自己讯榕,他們只是感情好骤素,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著愚屁,像睡著了一般济竹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霎槐,一...
    開(kāi)封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天送浊,我揣著相機(jī)與錄音,去河邊找鬼丘跌。 笑死袭景,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闭树。 我是一名探鬼主播耸棒,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼报辱!你這毒婦竟也來(lái)了与殃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奈籽,沒(méi)想到半個(gè)月后饥侵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衣屏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年躏升,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狼忱。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膨疏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钻弄,到底是詐尸還是另有隱情佃却,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布窘俺,位于F島的核電站饲帅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瘤泪。R本人自食惡果不足惜灶泵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望对途。 院中可真熱鬧赦邻,春花似錦、人聲如沸实檀。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)膳犹。三九已至恬吕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镣奋,已是汗流浹背币呵。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工怀愧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侨颈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓芯义,卻偏偏與公主長(zhǎng)得像哈垢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扛拨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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