中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

在Keras環(huán)境下構(gòu)建多層感知器模型,對數(shù)字圖像進(jìn)行精確識別。

模型不消耗大量計(jì)算資源,使用了cpu版本的keras,以Tensorflow 作為backended,在ipython交互環(huán)境jupyter notebook中進(jìn)行編寫。

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

1.數(shù)據(jù)來源

在Yann LeCun的博客頁面上下載開源的mnist數(shù)據(jù)庫:

http://yann.lecun.com/exdb/mn…

此數(shù)據(jù)庫包含四部分:訓(xùn)練數(shù)據(jù)集、訓(xùn)練數(shù)據(jù)集標(biāo)簽、測試數(shù)據(jù)集、測試數(shù)據(jù)集標(biāo)簽。由于訓(xùn)練模型為有監(jiān)督類型的判別模型,因此標(biāo)簽必不可少。若使用該數(shù)據(jù)集做k-means聚類,則不需要使用標(biāo)簽。將數(shù)據(jù)整合之后放入user\.keras\datasets文件夾以供調(diào)用。

也可以直接從keras建議的url直接下載:

https://s3.amazonaws.com/img-…

其中訓(xùn)練數(shù)據(jù)集包含了60000張手寫數(shù)字的圖片和這些圖片分別對應(yīng)的標(biāo)簽;測試數(shù)據(jù)集包含了10000張手寫數(shù)字的圖片和這些圖片分別對應(yīng)的標(biāo)簽.

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

2.數(shù)據(jù)格式和前期處理(在此不涉及)

訓(xùn)練數(shù)據(jù)集包含60000張圖片,測試數(shù)據(jù)集包含10000張,所有圖片都被當(dāng)量化為28pixel*28pixel的大小。為減少向量長度,將圖片灰度處理,每個像素用一個RGB值表示(0~255),這是因?yàn)榛叶忍幚砗蟮腞GB值加了歸一約束,向量長度相是灰度處理前的1/3。至此,每個圖片都可以用28*28的向量表示。

3.導(dǎo)入依賴庫

打開jupyter notebook后導(dǎo)入依賴庫numpy,此處的seed為隨機(jī)量的標(biāo)簽,可隨意設(shè)置:

Python

123from__future__importprint_functionimportnumpy asnpnp.random.seed(9999)

繼續(xù)從keras中導(dǎo)入使用到的模塊:

Python

12345fromkeras.datasets importmnistfromkeras.models importSequentialfromkeras.layers.core importDense,Dropout,Activationfromkeras.optimizers importSGD,Adam,RMSpropfromkeras.utils importnp_utils

mnist為之前準(zhǔn)備的數(shù)據(jù)集,Dense為全連接神經(jīng)元層,Dropout為神經(jīng)元輸入的斷接率,Activation為神經(jīng)元層的激勵函數(shù)設(shè)置。

導(dǎo)入繪圖工具,以便之后繪制模型簡化圖:

Python

1fromkeras.utils.vis_utils importplot_model asplot

4.處理導(dǎo)入的數(shù)據(jù)集

處理數(shù)據(jù)集

  1. 為了符合神經(jīng)網(wǎng)絡(luò)對輸入數(shù)據(jù)的要求,原本為60000*28*28shape的三維ndarray,改變成了尺寸為60000*784的2維數(shù)組,每行為一個example,每一列為一個feature。

  2. 神經(jīng)網(wǎng)絡(luò)用到大量線性與求導(dǎo)運(yùn)算,將輸入的feature的數(shù)值類型改變?yōu)?2位float。

  3. 將feature值歸一化,原本0~255的feature歸一為0~1。

  4. 測試數(shù)據(jù)集同理。

Python

1234567(X_train,y_train),(X_test,y_test)=mnist.load_data()X_train=X_train.reshape(60000,28*28)X_test=X_test.reshape(10000,28*28)X_train=X_train.astype('float32')X_test=X_test.astype('float32')X_train/=255X_test/=255

處理標(biāo)簽

文本識別問題本質(zhì)是一個多元分類問題。將類向量轉(zhuǎn)換為二進(jìn)制數(shù)表示的類矩陣,其中每一行都是每一個example對應(yīng)一個label。label為10維向量,每一位代表了此label對應(yīng)的example屬于特定類(0~10)的概率。此時Y_train為60000*10的向量,Y_test為10000*10的向量

Python

12Y_train=np_utils.to_categorical(y_train,nb_classes)Y_test=np_utils.to_categorical(y_test,nb_classes)

5.用keras建立神經(jīng)網(wǎng)絡(luò)模型

Python

123456789101112131415batch_size=128nb_classes=10nb_epoch=20model=Sequential()model.add(Dense(500,input_shape=(28*28,)))model.add(Activation('relu'))model.add(Dropout(0.2))model.add(Dense(500))model.add(Activation('relu'))model.add(Dropout(0.2))model.add(Dense(500))model.add(Activation('relu'))model.add(Dropout(0.2))model.add(Dense(10))model.add(Activation('softmax'))

每次iter時,每一批次梯度下降運(yùn)算所包含的example數(shù)量為128;

softmax輸出值為10維向量;

一共迭代20次iteration。

三層的神經(jīng)網(wǎng)絡(luò),其中輸入層為28*28=784維的全連接層。

Hidden Layer有3層,每一層有500個神經(jīng)元,input layer->hidden layer->output layer都是全連接方式(DENSE)。

hidden layer的激活函數(shù)采用ReLu函數(shù),表達(dá)式:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

如下圖所示:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

相比與傳統(tǒng)的sigmoid函數(shù),ReLU更容易學(xué)習(xí)優(yōu)化。因?yàn)槠浞侄尉€性性質(zhì),導(dǎo)致其前傳、后傳、求導(dǎo)都是分段線性。而傳統(tǒng)的sigmoid函數(shù),由于兩端飽和,在傳播過程中容易丟棄信息。且Relu在x

文本識別本質(zhì)是多元分類(此處為10元分類),因此輸出層采用softmax函數(shù)進(jìn)行feature處理,如下圖所示:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

其中第j個輸出層神經(jīng)元輸出值與當(dāng)層輸入feature的關(guān)系為:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

該神經(jīng)網(wǎng)絡(luò)示意圖如圖所示:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

調(diào)用summary方法做一個總覽:

Python

1

model.summary()

結(jié)果如下:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

該神經(jīng)網(wǎng)絡(luò)一共有898510個參數(shù),即在后向反饋過程中,每一次用梯度下降都要求898510次導(dǎo)數(shù)。

用plot函數(shù)打印model:

Python

1plot(model,to_file='mlp_model.png',show_shapes=True)

如下圖所示:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

編譯模型,使用cross_entropy交叉熵函數(shù)作為loss function,公式如下圖所示:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

用交叉熵可量化輸出向量與標(biāo)簽向量的差異,p與q分別為輸出向量與標(biāo)簽向量。對于每一個example,其交叉熵值就是要通過迭代盡量往小優(yōu)化的值。優(yōu)過程使用梯度算法,計(jì)算過程中使用反向傳播算法求導(dǎo)。

交叉熵的作用如下圖所示:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

在此分類神經(jīng)網(wǎng)絡(luò)中,使用判別結(jié)果的accuracy作為參數(shù)值好壞的度量標(biāo)準(zhǔn)。

6.用數(shù)據(jù)訓(xùn)練和測試網(wǎng)絡(luò)

Python

123history=model.fit(X_train,Y_train,batch_size=batch_size,nb_epoch=nb_epoch,verbose=1,validation_data=(X_test,Y_test))

在這個地方運(yùn)行碰到warning,原因是最新版的keras使用的iteration參數(shù)名改成了epoch,而非之前沿用的nb_epoch。將上面的代碼作修改即可。

訓(xùn)練結(jié)果如下所示。第一次迭代,通過對60000/128個的batch訓(xùn)練,已經(jīng)達(dá)到了比較好的結(jié)果,accuracy已經(jīng)高達(dá)0.957。之后Loss值繼續(xù)下降,精確度繼續(xù)上升。從第9個itearation開始,loss函數(shù)值(交叉熵cross_entropy)開始震蕩在0.05附近,accuracy保持在0.98以上。說明前9次迭代就已經(jīng)訓(xùn)練了足夠好的θ值和bias,不需要后11次訓(xùn)練。

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

7.評估模型

用score函數(shù)打印模型評估結(jié)果:

Python

123score=model.evaluate(X_test,Y_test,verbose=0)print('Test score:',score[0])print('Test accuracy:',score[1])

輸出結(jié)果如下圖所示:

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

訓(xùn)練的multi-layer_perceptron神經(jīng)網(wǎng)絡(luò)在對數(shù)字文本識別時具有98.12%的準(zhǔn)確率。

手寫數(shù)字圖片數(shù)據(jù)庫和Iris_Flower_dataset一樣,算是dl界的基本素材,可以拿來做很多事情,比如k-means聚類,LSTM(長短記憶網(wǎng)絡(luò))。

Python那些事——如何利用神經(jīng)網(wǎng)絡(luò)識別圖片文字呢?看這里呦!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Keras之CNN:基于Keras利用cv2建立訓(xùn)練存儲卷積神經(jīng)網(wǎng)絡(luò)模型(2+1)并調(diào)用攝像頭進(jìn)行實(shí)時人臉識別
深度學(xué)習(xí)基礎(chǔ)之LSTM
卷積神經(jīng)網(wǎng)絡(luò)簡介
神經(jīng)網(wǎng)絡(luò)你了解多少?今天我們來深度了解一下.....
10分鐘即可學(xué)會用AI破解驗(yàn)證碼,泛濫的Python破解已退出潮流!
深度學(xué)習(xí)庫Keras入門
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服