使用TensorFlow搭建一個全連線神經網路教程
阿新 • • 發佈:2020-02-07
說明
本例子利用TensorFlow搭建一個全連線神經網路,實現對MNIST手寫數字的識別。
先上程式碼
from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf # prepare data mnist = input_data.read_data_sets('MNIST_data',one_hot=True) xs = tf.placeholder(tf.float32,[None,784]) ys = tf.placeholder(tf.float32,10]) # the model of the fully-connected network weights = tf.Variable(tf.random_normal([784,10])) biases = tf.Variable(tf.zeros([1,10]) + 0.1) outputs = tf.matmul(xs,weights) + biases predictions = tf.nn.softmax(outputs) cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(predictions),reduction_indices=[1])) train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # compute the accuracy correct_predictions = tf.equal(tf.argmax(predictions,1),tf.argmax(ys,1)) accuracy = tf.reduce_mean(tf.cast(correct_predictions,tf.float32)) with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) for i in range(1000): batch_xs,batch_ys = mnist.train.next_batch(100) sess.run(train_step,feed_dict={ xs: batch_xs,ys: batch_ys }) if i % 50 == 0: print(sess.run(accuracy,feed_dict={ xs: mnist.test.images,ys: mnist.test.labels }))
程式碼解析
1. 讀取MNIST資料
mnist = input_data.read_data_sets('MNIST_data',one_hot=True)
2. 建立佔位符
xs = tf.placeholder(tf.float32,10])
xs 代表圖片畫素資料,每張圖片(28×28)被展開成(1×784),有多少圖片還未定,所以shape為None×784.
ys 代表圖片標籤資料,0-9十個數字被表示成One-hot形式,即只有對應bit為1,其餘為0.
3. 建立模型
weights = tf.Variable(tf.random_normal([784,10])) biases = tf.Variable(tf.zeros([1,reduction_indices=[1])) train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
使用Softmax函式作為啟用函式:
4. 計算正確率
correct_predictions = tf.equal(tf.argmax(predictions,tf.float32))
5. 使用模型
with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) for i in range(1000): batch_xs,ys: mnist.test.labels }))
執行結果
訓練1000個迴圈,準確率在87%左右.
Extracting MNIST_data/train-images-idx3-ubyte.gz Extracting MNIST_data/train-labels-idx1-ubyte.gz Extracting MNIST_data/t10k-images-idx3-ubyte.gz Extracting MNIST_data/t10k-labels-idx1-ubyte.gz 0.1041 0.632 0.7357 0.7837 0.7971 0.8147 0.8283 0.8376 0.8423 0.8501 0.8501 0.8533 0.8567 0.8597 0.8552 0.8647 0.8654 0.8701 0.8712 0.8712
以上這篇使用TensorFlow搭建一個全連線神經網路教程就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。