一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)篇——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

 萬(wàn)皇之皇 2017-12-14


準(zhǔn)備工作:

1. 安裝jupyter notebook, 教程:http:///article/getting-started-with-jupyter-notebook-part-1/

2. 一臺(tái)配置高點(diǎn)的電腦,這個(gè)還是有必要投入一些的,不然每次做練習(xí)都要等上很長(zhǎng)時(shí)間,我在公司的電腦大概做完這個(gè)訓(xùn)練要10秒左右,回家后的電腦要130秒左右。這還是一次訓(xùn)練的時(shí)間,后面做優(yōu)化還需要訓(xùn)練超參數(shù)與多種模型對(duì)比,總不能每次都多等待10幾倍的時(shí)間吧,程序員最忍受不了的就是無(wú)效的等待時(shí)間。

之前看機(jī)器學(xué)習(xí)界女神級(jí)的人物李飛飛的課程,里面專門(mén)介紹她用的電腦,可見(jiàn)牛人對(duì)電腦的要求是非常高的,下面看一張電腦配置的圖片:

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)篇——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

CPU: intel core i7-7700k 4.4G

內(nèi)存:4X8G

顯示卡: 兩個(gè)NV GTX 1070

硬盤(pán): HDD一個(gè), SSD兩個(gè)

這里多嘮兩句嗑兒,在技術(shù)裝備上千萬(wàn)不要舍不得花錢(qián),用2萬(wàn)多的電腦去學(xué)習(xí)心態(tài)都不一樣,心里會(huì)想“這么貴的電腦,要多用幾次啊,不能閑置在那兒浪費(fèi)了,多做練習(xí),多碼代碼”,多練習(xí)恰恰就是你是否能學(xué)習(xí)成功的關(guān)鍵,要用任務(wù)去驅(qū)動(dòng)自己,積極主動(dòng)的去學(xué)習(xí)。要記住一點(diǎn),現(xiàn)在花的錢(qián)以后都會(huì)十倍,百倍的掙回來(lái)。 (當(dāng)然我不是推銷(xiāo)賣(mài)電腦的,只是傳達(dá)一種理念)

引用:

我們要用到的是Michael Nielsen的例子,github地址:https://github.com/mnielsen/neural-networks-and-deep-learning

采用的數(shù)據(jù)集就是著名的“MNIST數(shù)據(jù)集”。它的收集者之一是人工智能領(lǐng)域著名的科學(xué)家——Yann LeCu。這個(gè)數(shù)據(jù)集有60000個(gè)訓(xùn)練樣本數(shù)據(jù)集和10000個(gè)測(cè)試用例。運(yùn)用本文展示的單隱層神經(jīng)網(wǎng)絡(luò),就可以達(dá)到96%的正確率。

舉例:

首先回顧一下機(jī)器學(xué)習(xí)的過(guò)程:

  • 選擇數(shù)據(jù)

  • 訓(xùn)練模型

  • 測(cè)試模型

  • 調(diào)優(yōu)模型

用一張圖片來(lái)表示

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)篇——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

其中生成模型這一步非常重要,它并不是一下就生成好了,是調(diào)整神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏移,取訓(xùn)練中誤差非常低的那個(gè),這里就聯(lián)系到之前講的“最小二乘法”的相關(guān)概念。

注意訓(xùn)練集的數(shù)據(jù)會(huì)反復(fù)用,但是測(cè)試集的數(shù)據(jù)只會(huì)執(zhí)行一次。可能會(huì)生成多個(gè)模型誤差都很小,這時(shí)候就用測(cè)試集來(lái)比較,挑選出測(cè)試集誤差最小的模型。

代碼:

不要緊張老鐵,代碼總共5行,還是算上兩行import的代碼的情況下。

import mnist_loader

import network

training_data, validation_data, test_data = mnist_loader.load_data_wrapper()

net = network.Network([784, 30, 10])

net.SGD(training_data, 30, 10, 3.0, test_data=test_data)

解釋一下:

  • 第一行代碼:將數(shù)據(jù)集拆分成三個(gè)集合:訓(xùn)練集、交叉驗(yàn)證集、測(cè)試集。

  • 第二行代碼:生成神經(jīng)網(wǎng)絡(luò)對(duì)象,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為三層,每層節(jié)點(diǎn)數(shù)依次為(784, 30, 10)。

  • 第三行代碼:用(mini-batch)梯度下降法訓(xùn)練神經(jīng)網(wǎng)絡(luò)(權(quán)重與偏移),并生成測(cè)試結(jié)果。

  • 該命令設(shè)定了三個(gè)超參數(shù):訓(xùn)練回合數(shù)=30, 用于隨機(jī)梯度下降法的最小樣本數(shù)(mini-batch-size)=10,步長(zhǎng)=3.0。

什么是超參數(shù)呢?超參數(shù)是影響所求參數(shù)最終取值的參數(shù),是機(jī)器學(xué)習(xí)模型里面的框架參數(shù),可以理解成參數(shù)的參數(shù),它們通常是手工設(shè)定,不斷試錯(cuò)調(diào)整的,或者對(duì)一系列窮舉出來(lái)的參數(shù)組合一通進(jìn)行枚舉(網(wǎng)格搜索)來(lái)確定。

打開(kāi)jupyter notebook進(jìn)入到下載的github代碼文件夾,再進(jìn)入src的文件夾,創(chuàng)建一個(gè)空白的python2.7的notebook,把代碼一個(gè)字一個(gè)字的打進(jìn)去,打的時(shí)候想想上面的注釋內(nèi)容,千萬(wàn)別粘貼,丟面兒,就5行代碼而已。打完后直接運(yùn)行就可以看到輸出結(jié)果,下面是我剛打的,熱乎乎:

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)篇——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

啟發(fā)式理解

這個(gè)我還是聽(tīng)寒老師講的,我覺(jué)得非常形象很容易理解,先看一張圖片:

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)篇——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

  • 第一層是輸入層。因?yàn)閙nist數(shù)據(jù)集中每一個(gè)手寫(xiě)數(shù)字樣本是一個(gè)28*28像素的圖像,因此對(duì)于每一個(gè)樣本,其輸入的信息就是每一個(gè)像素對(duì)應(yīng)的灰度,總共有28*28=784個(gè)像素,故這一層有784個(gè)節(jié)點(diǎn)。

  • 第三層是輸出層。因?yàn)榘⒗當(dāng)?shù)字總共有10個(gè),我們就要將樣本分成10個(gè)類(lèi)別,因此輸出層我們采用10個(gè)節(jié)點(diǎn)。當(dāng)樣本屬于某一類(lèi)(某個(gè)數(shù)字)的時(shí)候,則該類(lèi)(該數(shù)字)對(duì)應(yīng)的節(jié)點(diǎn)為1,而剩下9個(gè)節(jié)點(diǎn)為0,如[0,0,0,1,0,0,0,0,0,0]。

  • 因此,我們每一個(gè)樣本(手寫(xiě)數(shù)字的圖像)可以用一個(gè)超長(zhǎng)的784維的向量表示其特征,而用一個(gè)10維向量表示該樣本所屬的類(lèi)別(代表的真實(shí)數(shù)字),或者叫做標(biāo)簽。

  • mnist的數(shù)據(jù)就是這樣表示的。所以,如果你想看訓(xùn)練集中第n個(gè)樣本的784維特征向量,直接看training_data[n][0]就可以找到,而要看其所屬的標(biāo)簽,看training_data[n][1]就夠了。

  • 那么,第二層神經(jīng)網(wǎng)絡(luò)所代表的意義怎么理解?這其實(shí)是很難的。但是我們可以有一個(gè)啟發(fā)式地理解,比如用中間層的某一個(gè)節(jié)點(diǎn)表示圖像中的某一個(gè)小區(qū)域的特定圖像。這樣,我們可以假設(shè)中間層的頭4個(gè)節(jié)點(diǎn)依次用來(lái)識(shí)別圖像左上、右上、左下、右下4個(gè)區(qū)域是否存在這樣的特征的。

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)篇——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

如果這四個(gè)節(jié)點(diǎn)的值都很高,說(shuō)明這四個(gè)區(qū)域同時(shí)滿足這些特征。將以上的四個(gè)部分拼接起來(lái),我們會(huì)發(fā)現(xiàn),輸入樣本很可能就是一個(gè)手寫(xiě)“0”!

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)篇——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

因此,同一層的幾個(gè)神經(jīng)元同時(shí)被激活了意味著輸入樣本很可能是某個(gè)數(shù)字。

當(dāng)然,這只是對(duì)神經(jīng)網(wǎng)絡(luò)作用機(jī)制的一個(gè)啟發(fā)式理解。真實(shí)的過(guò)程卻并不一定是這樣。但通過(guò)啟發(fā)式理解,我們可以對(duì)神經(jīng)網(wǎng)絡(luò)作用機(jī)制有一個(gè)更加直觀的認(rèn)識(shí)。

總結(jié):

通過(guò)今天的5行代碼,可以算是自己在機(jī)器學(xué)習(xí)界的 “Hello world”。重點(diǎn)是理解機(jī)器學(xué)習(xí)的工作流程,以及神經(jīng)網(wǎng)絡(luò)作用機(jī)制。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    日韩欧美一区二区不卡视频| 91熟女大屁股偷偷对白| 伊人网免费在线观看高清版| 厕所偷拍一区二区三区视频| 精品人妻av区波多野结依| 国产精品久久精品国产| 久久精品中文扫妇内射| 一个人的久久精彩视频| 国产香蕉国产精品偷在线观看| 蜜桃av人妻精品一区二区三区 | 亚洲永久一区二区三区在线| 欧美一区二区三区视频区| 正在播放国产又粗又长| 国产精品制服丝袜美腿丝袜| 在线观看国产成人av天堂野外 | 91久久国产福利自产拍 | 国产一区二区三中文字幕 | 夫妻性生活真人动作视频 | 91亚洲国产成人久久精品麻豆| 久久精品国产在热久久| 免费在线成人激情视频| 精品国产亚洲av成人一区| 日韩人妻欧美一区二区久久| 亚洲午夜精品视频观看| 日本高清不卡一二三区| 男人操女人下面国产剧情| 中文字幕免费观看亚洲视频| 精品人妻少妇二区三区| 男人和女人草逼免费视频| 国产av一区二区三区四区五区| 欧美日本道一区二区三区| 丰满少妇被猛烈撞击在线视频 | 亚洲丁香婷婷久久一区| 久久精品伊人一区二区| 人妻人妻人人妻人人澡| 少妇肥臀一区二区三区| 亚洲精品黄色片中文字幕| 成在线人免费视频一区二区| 久久综合狠狠综合久久综合| 人妻亚洲一区二区三区| 护士又紧又深又湿又爽的视频|