Tensorflow的官方文檔中提供了一個(gè)很好的mnist的demo數(shù)據(jù),在這里我把我執(zhí)行的代碼分享一下源哩。具體的代碼參考https://github.com/weizy1981/TensorFlow
這里只是把利用softmax來識(shí)別手下數(shù)字的程序說明一下:
importapp.input_dataasinput_data
importtensorflowastf
# 導(dǎo)入數(shù)據(jù)
mnist = input_data.read_data_sets("MNIST_data/",one_hot=True)
# 創(chuàng)建占位符
x = tf.placeholder("float", [None,784])
'''一個(gè)Variable代表一個(gè)可修改的張量,存在在TensorFlow的用于描述交互性操作的圖中台舱。
它們可以用于計(jì)算輸入值饲化,也可以在計(jì)算中被修改雇逞。
對(duì)于各種機(jī)器學(xué)習(xí)應(yīng)用,一般都會(huì)有模型參數(shù)珠移,可以用Variable表示弓乙。'''
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
# 創(chuàng)建模型
y = tf.nn.softmax(tf.matmul(x, W) + b)
# 訓(xùn)練模型
# 為了計(jì)算交叉熵,我們首先需要添加一個(gè)新的占位符用于輸入正確值:
y_ = tf.placeholder("float", [None,10])
# 計(jì)算交叉熵
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
# 用梯度下降算法(gradient descent algorithm)以0.01的學(xué)習(xí)速率最小化交叉熵
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
# 初始化我們創(chuàng)建的變量
init = tf.global_variables_initializer()
# 啟動(dòng)我們的模型钧惧,并且初始化變量
sess = tf.Session()
sess.run(init)
# 訓(xùn)練模型暇韧,這里我們讓模型循環(huán)訓(xùn)練1000次
foriinrange(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step,feed_dict={x: batch_xs, y_: batch_ys})
# 訓(xùn)練模型
#評(píng)估我們的模型
#用 tf.equal 來檢測我們的預(yù)測是否真實(shí)標(biāo)簽匹配
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
#把布爾值轉(zhuǎn)換成浮點(diǎn)數(shù),然后取平均值
accuracy = tf.reduce_mean(tf.cast(correct_prediction,"float"))
#計(jì)算所學(xué)習(xí)到的模型在測試數(shù)據(jù)集上面的正確率
print(sess.run(accuracy,feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
#評(píng)估我們的模型