成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

構(gòu)建多層感知器神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)字圖片進(jìn)行文本識(shí)別

LeanCloud / 1918人閱讀

摘要:搞點(diǎn)有意思的圖像識(shí)別在環(huán)境下構(gòu)建多層感知器模型,對(duì)數(shù)字圖像進(jìn)行精確識(shí)別。對(duì)于每一個(gè),其交叉熵值就是要通過(guò)迭代盡量往小優(yōu)化的值。交叉熵的作用如下圖所示在此分類神經(jīng)網(wǎng)絡(luò)中,使用判別結(jié)果的作為參數(shù)值好壞的度量標(biāo)準(zhǔn)。

搞點(diǎn)有意思的?
??!圖像識(shí)別?( ?? ω ?? )y

在Keras環(huán)境下構(gòu)建多層感知器模型,對(duì)數(shù)字圖像進(jìn)行精確識(shí)別。
模型不消耗大量計(jì)算資源,使用了cpu版本的keras,以Tensorflow 作為backended,在ipython交互環(huán)境jupyter notebook中進(jìn)行編寫。

1.數(shù)據(jù)來(lái)源

在Yann LeCun的博客頁(yè)面上下載開(kāi)源的mnist數(shù)據(jù)庫(kù):
http://yann.lecun.com/exdb/mn...

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

也可以直接從keras建議的url直接下載:
https://s3.amazonaws.com/img-...

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


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

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

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

from __future__ import print_function
import numpy as np
np.random.seed(9999)

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

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

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

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

from keras.utils.vis_utils import plot_model as plot

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

處理數(shù)據(jù)集
1.為了符合神經(jīng)網(wǎng)絡(luò)對(duì)輸入數(shù)據(jù)的要求,原本為60000*28*28shape的三維ndarray,改變成了尺寸為60000*784的2維數(shù)組,每行為一個(gè)example,每一列為一個(gè)feature。
3.神經(jīng)網(wǎng)絡(luò)用到大量線性與求導(dǎo)運(yùn)算,將輸入的feature的數(shù)值類型改變?yōu)?2位float。
3.將feature值歸一化,原本0~255的feature歸一為0~1。
4.測(cè)試數(shù)據(jù)集同理。

(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 /= 255
X_test /= 255

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

Y_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ò)模型

batch_size = 128
nb_classes = 10
nb_epoch = 20
model = 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時(shí),每一批次梯度下降運(yùn)算所包含的example數(shù)量為128;
softmax輸出值為10維向量;
一共迭代20次iteration。

三層的神經(jīng)網(wǎng)絡(luò),其中輸入層為28*28=784維的全連接層。
Hidden Layer有3層,每一層有500個(gè)神經(jīng)元,input layer->hidden layer->output layer都是全連接方式(DENSE)。

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

如下圖所示:

相比與傳統(tǒng)的sigmoid函數(shù),ReLU更容易學(xué)習(xí)優(yōu)化。因?yàn)槠浞侄尉€性性質(zhì),導(dǎo)致其前傳、后傳、求導(dǎo)都是分段線性。而傳統(tǒng)的sigmoid函數(shù),由于兩端飽和,在傳播過(guò)程中容易丟棄信息。且Relu在x<0時(shí)所映射的值永遠(yuǎn)是0,因此可稀疏掉負(fù)的feature。

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

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

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

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

model.summary()

結(jié)果如下:

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

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

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

如下圖所示:

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

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

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

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

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

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

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

7.評(píng)估模型

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

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

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

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/40769.html

相關(guān)文章

  • 深度學(xué)習(xí)研究綜述

    摘要:此原因在一定程度上阻礙了深度學(xué)習(xí)的發(fā)展,并將大多數(shù)機(jī)器學(xué)習(xí)和信號(hào)處理研究,從神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)移到相對(duì)較容易訓(xùn)練的淺層學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)算法可以看成核機(jī)器學(xué)習(xí)中一個(gè)優(yōu)越的特征表示方法。 摘要:深度學(xué)習(xí)是一類新興的多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法。因其緩解了傳統(tǒng)訓(xùn)練算法的局部最小性, 引起機(jī)器學(xué)習(xí)領(lǐng)域的廣泛關(guān)注。首先論述了深度學(xué)習(xí)興起淵源, 分析了算法的優(yōu)越性, 并介紹了主流學(xué)習(xí)算法及應(yīng)用現(xiàn)狀,最后總結(jié)當(dāng)前存在的...

    jokester 評(píng)論0 收藏0
  • 深度學(xué)習(xí)

    摘要:深度學(xué)習(xí)在過(guò)去的幾年里取得了許多驚人的成果,均與息息相關(guān)。機(jī)器學(xué)習(xí)進(jìn)階筆記之一安裝與入門是基于進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),被廣泛用于語(yǔ)音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域。零基礎(chǔ)入門深度學(xué)習(xí)長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)。 多圖|入門必看:萬(wàn)字長(zhǎng)文帶你輕松了解LSTM全貌 作者 | Edwin Chen編譯 | AI100第一次接觸長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)時(shí),我驚呆了。原來(lái),LSTM是神...

    Vultr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<