文/邢萌
采用TensorFlow,能夠使神經(jīng)網(wǎng)絡(luò)編寫難度得到降低,并使網(wǎng)絡(luò)識別率得到提高。因此在手寫數(shù)字識別模型設(shè)計與實現(xiàn)上,還要加強TensorFlow的應(yīng)用,提出更加有效的識別方法。
TensorFlow為開源軟件平臺,可以采用數(shù)據(jù)流圖實現(xiàn)數(shù)值計算,為神經(jīng)網(wǎng)絡(luò)構(gòu)建提供接口,實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的快速構(gòu)建。平臺上每個計算都能利用計算圖表示,其中每個節(jié)點都是一個運算操作,節(jié)點與節(jié)點利用邊連接,每個節(jié)點擁有任意多輸入和輸出,可看成是運算操作的實例化。而在計算機中流動的數(shù)據(jù),即張量。在利用TensorFlow進行開發(fā)時,需要利用圖進行計算任務(wù)表示,然后進行會話建立,將圖傳至TensorFlow引擎中,使圖得到啟動。通過變量初始化操作,并實現(xiàn)節(jié)點運行,則能使變量值得到更新。采用TensorFlow,能夠?qū)C器學習算法進行執(zhí)行,為多種開發(fā)語言提供支持,能夠在異構(gòu)系統(tǒng)上實現(xiàn)算法移植,為系統(tǒng)部署提供支持。作為開源機器學習軟件資源庫,目前TensorFlow能夠為線性回歸、深度學習、邏輯回歸等各種算法提供支持。
設(shè)計手寫數(shù)字識別模型,還要使模型能夠?qū)D像進行識別,通過計算機處理圖像信息,對圖像內(nèi)容進行理解,從而實現(xiàn)精確識別。而在圖像識別方面,主要需要采用機器學習方法,使模型通過先驗學習進行經(jīng)驗獲取,然后對數(shù)據(jù)獲取規(guī)律進行自動分析,完成知識結(jié)構(gòu)的組織,能夠正確進行響應(yīng)。為此,還要使計算機對人類學習活動進行模擬,在掌握經(jīng)驗和規(guī)律的基礎(chǔ)上,對未知和潛在概率分布等信息進行推理,確定數(shù)據(jù)樣本中變量間的關(guān)系。手寫數(shù)字識別屬于分類問題,需將實例數(shù)據(jù)進行合理分類,能夠采用支持向量機算法、k-近鄰算法等多種算法。而同類的算法有較多,還要加強數(shù)據(jù)集的分析,以便進一步了解實際數(shù)據(jù),縮小算法的選擇范圍。在應(yīng)用程序開發(fā)階段,需要完成數(shù)據(jù)收集,然后對數(shù)據(jù)源進行格式化處理,確保數(shù)據(jù)能夠滿足格式要求。將得到的數(shù)據(jù)輸入到算法中,則能實現(xiàn)算法訓練,完成知識或信息的抽取。確定訓練得到的算法能夠達到成功率的要求,則能轉(zhuǎn)換為應(yīng)用程序進行任務(wù)執(zhí)行。
實際進行模型設(shè)計時,采用MNIST數(shù)據(jù)集,由訓練集、驗證集和測試集構(gòu)成,分別有55000、5000和10000個樣本,從TensorFlow官網(wǎng)下載獲得。對樣本數(shù)據(jù)進行分析發(fā)現(xiàn),每個樣本包含對應(yīng)標簽信息,能夠?qū)Ρ硎镜臄?shù)字進行描述。而樣本實際描述的為28×28像素的灰度圖片,每張圖片為長度784的數(shù)組,不包含二維結(jié)構(gòu)信息,數(shù)據(jù)得到了簡化,分類相對簡單。從特征上來看,樣本數(shù)據(jù)為55000×784張量,圖片編號為一維,圖片像素點為二維,數(shù)值為像素點灰度值,標簽為55000×10的張量,能夠?qū)D片代表的數(shù)字進行描述,標簽為19維向量。樣本圖標簽向量對應(yīng)位置為1,其余均為0。數(shù)據(jù)集中樣本描述數(shù)字在0-9之間,共10類,所以手寫數(shù)字識別要對第i樣本為0-9中哪個數(shù)字的概率進行計算。結(jié)合數(shù)據(jù)特點,可以采用相對簡單的softmax回歸算法,設(shè)計的模型樣本包含m個,類別為k個,得到的訓練集為 {(x(1), y(1)),(x(2), y(2)),……,(x(m),y(m))},x(i)∈R(n+1),標簽 y(i)∈{1,2,……,k}。針對輸入x,應(yīng)假設(shè)針對各類別j的概率值為p(y=j|x)。在函數(shù)輸出k維向量的情況下,向量元素和為1,函數(shù)hθ(x)如下:

式 中,θ1, θ2, θk∈Rn+1為 模 型 參 數(shù),P(y(i)=j|x(i); θj)則是樣本 x(i)屬于 j類概率。在模型參數(shù)計算的過程中,還要采用梯度下降法。針對得到的回歸模型,需要輸入樣本數(shù)據(jù),對測試樣本數(shù)據(jù)所屬類別概率進行計算,預(yù)測結(jié)果則是概率最大的類別。
在模型實現(xiàn)階段,需要載入TensorFlow庫完成InteractiveSession創(chuàng)建,然后進行Placeholder創(chuàng)建,確定數(shù)據(jù)輸入位置。在Placeholder中,首個參數(shù)代表的是數(shù)據(jù)類型,其次則為[None,784],指的是數(shù)據(jù)尺寸,None意味不對輸入的條數(shù)進行限制,但是784則是對各條維向量進行限制。在此基礎(chǔ)上需要對回歸模型的biases和weight進行創(chuàng)建,然后進行回歸算法的實現(xiàn)。在模型訓練階段,需要對損失的函數(shù)進行計算,利用函數(shù)對模型分類精度進行描述。在損失較少的情況下,說明采用模型獲得的分類結(jié)果較為接近真實值,得到的結(jié)果較為精確。在實際操作時,需要先對模型進行初始化操作,將各參數(shù)設(shè)為零。而訓練loss將不斷減小,直至局部最優(yōu)或全局最優(yōu)。損失函數(shù)可以采用cross-entropy,需要利用TensorFlow進行計算。在算法優(yōu)化階段,需要采用隨機梯度下降,然后進行訓練操作迭代執(zhí)行。具體來講,就是進行100條樣本隨機抽取,完成mini-batch的構(gòu)建,提供給placeholder。對train_step進行調(diào)用,可以完成樣本訓練。采用tf.argmax從張量中進行最大值序號的獲取,可以實現(xiàn)模型準確率的測試。而tf.argmax(y,1)的概率最大,為數(shù)字類別。確定得到的結(jié)果是否正確,可以確定是否實現(xiàn)了正確分類。
根據(jù)手寫數(shù)字特點,基于TensorFlow實現(xiàn)了相應(yīng)的識別模型設(shè)計。采用該模型,可以利用softmax回歸算法實現(xiàn)數(shù)字分類問題的簡化,得到結(jié)構(gòu)相對簡單的神經(jīng)網(wǎng)絡(luò)模型,并且獲得較高的數(shù)字識別概率。