国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

TensorFlow讀取數(shù)據(jù)在簡(jiǎn)單圖像識(shí)別中的應(yīng)用

2019-10-21 07:37來(lái)學(xué)偉
現(xiàn)代信息科技 2019年12期

摘 ?要:本文以MNIST數(shù)據(jù)庫(kù)為例,用TensorFlow讀取數(shù)據(jù)集中的數(shù)據(jù),并建立一個(gè)簡(jiǎn)單的圖像識(shí)別模型。同時(shí)以TensorFlow為工具,寫(xiě)一個(gè)手寫(xiě)體數(shù)字識(shí)別程序,使用的機(jī)器方法是Softmax回歸。通過(guò)把占位符的值傳遞給會(huì)話,計(jì)算后運(yùn)行梯度下降后,可以檢測(cè)模型訓(xùn)練的結(jié)果,得到預(yù)測(cè)的標(biāo)簽和實(shí)際標(biāo)簽,接下來(lái)通過(guò)tf.equal函數(shù)來(lái)比較它們是否相等,并將結(jié)果保存到correct_prediction中。最后,用tf.reduce_mean可以計(jì)算數(shù)組中的所有元素的平均值,相當(dāng)于得到了模型的預(yù)測(cè)準(zhǔn)確率。該模型識(shí)別的準(zhǔn)確率超過(guò)90%,具有一定的推廣價(jià)值。

關(guān)鍵詞:MNIST數(shù)據(jù)集;Softmax回歸;訓(xùn)練模型

中圖分類號(hào):TP181 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)12-0098-02

Abstract:This paper takes the MNIST database as an example,uses TensorFlow to read the data in the data set,and establishes a simple image recognition model.At the same time with TensorFlow tool,write a handwritten number recognition program,using Softmax regression. By passing the value of placeholder to the session,the result of model training can be detected after the gradient descent is run after calculation,and the predicted tag and the actual tag can be obtained. Next,the equality function of tf.equal is used to compare whether they are equal,and the result is saved in correct_prediction. Finally,tf.reduce_mean can be used to calculate the average value of all elements in the array,which is equivalent to the prediction accuracy of the model.The recognition accuracy of the modified model is more than 90%,which has a little promotion value.

Keywords:MNIST data set;Softmax regression;training model

0 ?引 ?言

拍攝手寫(xiě)的數(shù)字而形成的圖片以及一些相對(duì)應(yīng)的標(biāo)記共同組成了MNIST數(shù)據(jù)集,這種數(shù)據(jù)集主要包含了兩種類型的圖像,一種是訓(xùn)練用的圖像,還有一種是測(cè)試用的圖像。在原始的MNIST數(shù)據(jù)集中,我們用28行28列的矩陣來(lái)表示每一張圖像。而在TensorFlow中,變量mnist.train.images是訓(xùn)練樣本,它的形狀為(55000,784)。其中,5000是訓(xùn)練圖像的數(shù)量,單個(gè)圖像樣本的維數(shù)為784,也就是說(shuō)任何一個(gè)圖像樣本都被一個(gè)有784維的向量來(lái)表示(28行乘以28列為784維)。

1 ?Softmax回歸

Softmax回歸是一個(gè)完整的線性的多類分類模型,事實(shí)上它是通過(guò)Logistic回歸直接從模型轉(zhuǎn)化而來(lái)的。與之不同的是Logistic回歸模型是一種兩類分類模型,而Softmax模型則是多類分類模型。在手寫(xiě)數(shù)字圖像識(shí)別問(wèn)題中,總共有10個(gè)不同的類別(即從0到9),我們希望對(duì)輸入的圖像計(jì)算它屬于每個(gè)類別的概率。如屬于9的概率為70%,屬于1的概率為10%等。最后模型預(yù)測(cè)的結(jié)果就是概率最大的那個(gè)類別。

Softmax函數(shù)的最核心的作用是對(duì)每個(gè)不同的類別進(jìn)行“給分”,然后根據(jù)分值轉(zhuǎn)化為合理的概率值。例如:一個(gè)樣本可能屬于三個(gè)類別,第一個(gè)類別的打分為a,第二個(gè)類別的打分為b,第三個(gè)類別的打分為c。打分越高代表屬于這個(gè)類別的概率越高,但是打分本身不代表概率,因?yàn)榇蚍值闹悼梢允秦?fù)數(shù),也可以很大,但概率要求值必須在0~1之間,并且三類的概率加起來(lái)應(yīng)該等于l。那么,如何將(a,b,c)轉(zhuǎn)換成合理的概率值呢?方法就是使用Softmax函數(shù)。

假設(shè)x是單個(gè)樣本的特征,W、b是Softmax模型的參數(shù)。在MNIST數(shù)據(jù)集中,x表示輸入的圖像,它是一個(gè)784維的向量,W表示一個(gè)矩陣,它的形狀為(784,10),b是一個(gè)10維的向量,10代表的是類別數(shù)。首先,Softmax模型的是通過(guò)各個(gè)公式來(lái)計(jì)算各個(gè)不同類別的Logit:

Logit=WTx+b

Logit同樣是一個(gè)10維的向量,它實(shí)際上可以看成樣本對(duì)應(yīng)于各個(gè)類別的“打分”。接下來(lái)使用Softmax函數(shù)將它轉(zhuǎn)換成各個(gè)類別的概率值:

y=Softmax(Logit)

Softmax模型輸出的y代表各個(gè)類別的概率,還可以直接用下面的式子來(lái)表示整個(gè)Softmax模型:

y=Softmax(WTx+b)

2 ?Softmax回歸在TensorFlow中的實(shí)現(xiàn)

本文對(duì)應(yīng)的程序?yàn)閟oftmax_regression.py,在該程序中,使用TensorFlow定義了一個(gè)Softmax模型,實(shí)現(xiàn)了MNIST數(shù)據(jù)集的分類。

除了變量和占位符之外,還創(chuàng)建了一個(gè)y=tf.nn.softmax(tf.matmul(x,W)+b)[1]。這個(gè)y就是一個(gè)依賴x、W、b的Tensor。如果要求TensorFlow計(jì)算y的值,那么系統(tǒng)首先會(huì)獲取x、W、b的值,再去計(jì)算y的值。

y實(shí)際上定義了一個(gè)Softmax回歸模型,在此可以嘗試寫(xiě)出y的形狀。假設(shè)輸入x的形狀為(N,784),其中N表示輸入的訓(xùn)練圖像的數(shù)目。W的形狀為(784,10),b的形狀為(10,1)。那么,Wx+b的形狀是(N,10)。Softmax函數(shù)不改變結(jié)果的形狀,所以得到y(tǒng)的形狀為(N,10)。也就是說(shuō),一個(gè)10維的向量表示y的每一行,表示模型預(yù)測(cè)的樣本對(duì)應(yīng)到各個(gè)類別的概率[2]。

模型的輸出是y,而實(shí)際的標(biāo)簽為y_,它們應(yīng)當(dāng)越相似越好。在Softmax回歸模型中,通常使用“交叉熵”損失來(lái)衡量這種相似性[3]。損失越小,模型的輸出就和實(shí)際標(biāo)簽越接近,模型的預(yù)測(cè)也就越準(zhǔn)確。

在TensorFlow中,這樣定義交叉熵?fù)p失:

Cross_entropy = \tf. reduce_mean(-tf.reduce_sum(y_*tf.log(y)))

構(gòu)造完損失之后,下面一步是如何優(yōu)化損失,讓損失減小。這里使用梯度下降法優(yōu)化損失,定義為:

Train_step=tf.train.GradientDescentOptimizer (0.01).minimize(cross_entropy)

TensorFlow默認(rèn)會(huì)對(duì)所有變量計(jì)算梯度。在這里只定義了兩個(gè)變量W和b,因此程序?qū)⑹褂锰荻认陆捣▽?duì)W,b計(jì)算梯度并更新它們的值。tf.train.GradientDescentOptimizer(0.01)中的0.01是梯度下降優(yōu)化器使用的學(xué)習(xí)率(Learning Rate)。

在優(yōu)化前,必須要?jiǎng)?chuàng)建一個(gè)會(huì)話(Session),并在會(huì)話中對(duì)變量進(jìn)行初始化操作:

sess = tf.InteractiveSession()

tf.global_variables_initializer(). run()

有了會(huì)話,就可以對(duì)變量W,b進(jìn)行優(yōu)化了,每次不使用全部訓(xùn)練數(shù)據(jù),而是每次提取100個(gè)數(shù)據(jù)進(jìn)行訓(xùn)練,共訓(xùn)練1000次[4]。batch_xs,batch_ys分別是100個(gè)訓(xùn)練圖像及其對(duì)應(yīng)的標(biāo)簽。在訓(xùn)練時(shí),需要把它們放入對(duì)應(yīng)的占位符x,y_中,對(duì)應(yīng)的語(yǔ)句是feed_dict={x:batch_xs,y_:batch_ys}。

在會(huì)話中,不需要系統(tǒng)計(jì)算占位符的值,而是直接把占位符的值傳遞給會(huì)話。與變量不同的是,占位符的值不會(huì)被保存,每次可以給占位符傳遞不同的值。

運(yùn)行完梯度下降后,可以檢測(cè)模型訓(xùn)練的結(jié)果,模型預(yù)測(cè)y的形狀是(N,10),而實(shí)際標(biāo)簽y_的形狀是(N,10),其中N為輸入模型的樣本個(gè)數(shù)。tf.argmax(y,1)、tf.argmax(y_,1)的功能是取出數(shù)組中最大值的下標(biāo),可以用來(lái)將獨(dú)熱表示以及模型輸出轉(zhuǎn)換為數(shù)字標(biāo)簽。假設(shè)傳入四個(gè)樣本,它們的獨(dú)熱表示y_為(需要通過(guò)sess.run(y_)才能獲取此Tensor的值):得到了預(yù)測(cè)的標(biāo)簽和實(shí)際標(biāo)簽,接下來(lái)通過(guò)tf.equal函數(shù)來(lái)比較它們是否相等,并將結(jié)果保存到correct_prediction中。

即第一個(gè)樣本和最后一個(gè)樣本預(yù)測(cè)是正確的,另外兩個(gè)樣本預(yù)測(cè)錯(cuò)誤。可以用tf.cast(correct-prediction,tf.float32)將比較值轉(zhuǎn)換成float32型的變量,此時(shí)True會(huì)被轉(zhuǎn)換成1,F(xiàn)alse會(huì)被轉(zhuǎn)換成0。

最后,用tf.reduce_mean可以計(jì)算數(shù)組中的所有元素的平均值,相當(dāng)于得到了模型的預(yù)測(cè)準(zhǔn)確率,如[1.,0.,0.,1.]的平均值為0.5,即50%的分類準(zhǔn)確率。

在程序softmax_regression.py中,傳入占位符的值是feed_dict={x:mnist.test.images, y_: mnist.test.labels}。也就是說(shuō),使用全體測(cè)試樣本進(jìn)行測(cè)試,測(cè)試圖片一共有10000張,運(yùn)行的結(jié)果為0.9185,即91.85%的準(zhǔn)確率。因?yàn)镾oftmax回歸是一個(gè)比較簡(jiǎn)單的模型。

3 ?結(jié) ?論

本文以MNIST數(shù)據(jù)庫(kù)為例,用TensorFlow讀取數(shù)據(jù)集中的數(shù)據(jù),并建立一個(gè)簡(jiǎn)單的圖像識(shí)別模型。同時(shí)以TensorFlow為工具,寫(xiě)一個(gè)手寫(xiě)體數(shù)字識(shí)別程序,使用的機(jī)器方法是Softmax回歸模型。該模型識(shí)別的準(zhǔn)確率超過(guò)90%,具有一定的推廣價(jià)值。

參考文獻(xiàn):

[1] FesianXu.在TensorFlow中自定義梯度的兩種方法 [EB/OL].https://blog.csdn.net/LoseInVain/article/details/83108001,2018-10-19.

[2] 束陳.基于智能床墊的睡眠健康狀況研究 [D].北京:北京郵電大學(xué),2018.

[3] BVL10101111. Deep Learning 之最優(yōu)化方法 [EB/OL].https://blog.csdn.net/BVL10101111/article/details/72614711,2017-05-21.

[4] 高橋耕三,周廣文.靜止衛(wèi)星之間碰撞的概率及其避免方法 [J].國(guó)外導(dǎo)彈技術(shù),1984(2):20-32.

作者簡(jiǎn)介:來(lái)學(xué)偉(1981-),男,漢族,河南靈寶人,工程碩士,講師,主要研究方向:計(jì)算機(jī)軟件開(kāi)發(fā)與研究。

柏乡县| 固原市| 丰县| 镇原县| 原阳县| 广西| 安吉县| 嘉峪关市| 沂源县| 通江县| 怀安县| 罗源县| 易门县| 安多县| 阿鲁科尔沁旗| 岳普湖县| 仙居县| 安达市| 梅河口市| 义乌市| 墨玉县| 永寿县| 佛冈县| 诸暨市| 黄大仙区| 天全县| 芜湖县| 应用必备| 巴马| 青浦区| 隆安县| 玉山县| 成都市| 尚义县| 凤阳县| 南乐县| 蓝山县| 塔城市| 凤翔县| 四川省| 乐陵市|