tensorflow實(shí)現(xiàn)softma識(shí)別MNIST
識(shí)別MNIST已經(jīng)成了深度學(xué)習(xí)的hello world,所以每次例程基本都會(huì)用到這個(gè)數(shù)據(jù)集,這個(gè)數(shù)據(jù)集在tensorflow內(nèi)部用著很好的封裝,因此可以方便地使用。
這次我們用tensorflow搭建一個(gè)softmax多分類器,和之前搭建線性回歸差不多,第一步是通過確定變量建立圖模型,然后確定誤差函數(shù),最后調(diào)用優(yōu)化器優(yōu)化。
誤差函數(shù)與線性回歸不同,這里因?yàn)槭嵌喾诸悊栴},所以使用了交叉熵。
另外,有一點(diǎn)值得注意的是,這里構(gòu)建模型時(shí)我試圖想拆分多個(gè)函數(shù),但是后來發(fā)現(xiàn)這樣做難度很大,因?yàn)閳D是在規(guī)定變量就已經(jīng)定義好的,不能隨意拆分,也不能當(dāng)做變量傳來傳去,因此需要將他們寫在一起。
代碼如下:
#encoding=utf-8 __author__ = 'freedom' import tensorflow as tf def loadMNIST(): from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data',one_hot=True) return mnist def softmax(mnist,rate=0.01,batchSize=50,epoch=20): n = 784 # 向量的維度數(shù)目 m = None # 樣本數(shù),這里可以獲取,也可以不獲取 c = 10 # 類別數(shù)目 x = tf.placeholder(tf.float32,[m,n]) y = tf.placeholder(tf.float32,[m,c]) w = tf.Variable(tf.zeros([n,c])) b = tf.Variable(tf.zeros([c])) pred= tf.nn.softmax(tf.matmul(x,w)+b) loss = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred),reduction_indices=1)) opt = tf.train.GradientDescentOptimizer(rate).minimize(loss) init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) for index in range(epoch): avgLoss = 0 batchNum = int(mnist.train.num_examples/batchSize) for batch in range(batchNum): batch_x,batch_y = mnist.train.next_batch(batchSize) _,Loss = sess.run([opt,loss],{x:batch_x,y:batch_y}) avgLoss += Loss avgLoss /= batchNum print 'every epoch average loss is ',avgLoss right = tf.equal(tf.argmax(pred,1),tf.argmax(y,1)) accuracy = tf.reduce_mean(tf.cast(right,tf.float32)) print 'Accracy is ',sess.run(accuracy,({x:mnist.test.images,y:mnist.test.labels})) if __name__ == "__main__": mnist = loadMNIST() softmax(mnist)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用Pillow實(shí)現(xiàn)圖像基本變化
這篇文章主要為大家詳細(xì)介紹了Python如何使用Pillow實(shí)現(xiàn)圖像的基本變化處理,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以了解一下2022-10-10Python利用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài)
PSUtil是一個(gè)跨平臺(tái)的Python庫,用于檢索有關(guān)正在運(yùn)行的進(jìn)程和系統(tǒng)利用率(CPU,內(nèi)存,磁盤,網(wǎng)絡(luò),傳感器)的信息。本文就來用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài),感興趣的可以跟隨小編一起學(xué)習(xí)一下2023-04-04windows下添加Python環(huán)境變量的方法匯總
默認(rèn)情況下,在windows下安裝python之后,系統(tǒng)并不會(huì)自動(dòng)添加相應(yīng)的環(huán)境變量。此時(shí)不能在命令行直接使用python命令。今天我們就來看下,如何簡(jiǎn)單快捷的在windows下添加Python環(huán)境變量2018-05-05好的Python培訓(xùn)機(jī)構(gòu)應(yīng)該具備哪些條件
python是現(xiàn)在開發(fā)的熱潮,大家應(yīng)該如何學(xué)習(xí)呢?許多人選擇自學(xué),還有人會(huì)選擇去培訓(xùn)結(jié)構(gòu)學(xué)習(xí),那么好的培訓(xùn)機(jī)構(gòu)的標(biāo)準(zhǔn)是什么樣的呢?下面跟隨腳本之家小編一起通過本文學(xué)習(xí)吧2018-05-05Python word實(shí)現(xiàn)讀取及導(dǎo)出代碼解析
這篇文章主要介紹了Python word實(shí)現(xiàn)讀取及導(dǎo)出代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法
今天小編就為大家分享一篇Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12