softmax regression 簡單實現
MNIST數據集的使用是機器學習領域的HelloWorld.
- 他由幾萬張28x28像素的圖片組成,這些圖片只包含灰度信息,我們要做的就是對這些圖片進行分類,分為0-9共10類.
- softmax regression 模型在對圖片進行預測時會為每個類估算一個概率,最後取概率大的為輸出結果。
- 處理多分類的問題通常使用該模型,CNN和RNN最後一層同樣是Softmax Regression
這是代碼部分
from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_hot=True)print(mnist.train.images.shape, mnist.train.labels.shape)print(mnist.test.images.shape, mnist.test.labels.shape)print(mnist.validation.images.shape, mnist.validation.labels.shape)import tensorflow as tfsess = tf.InteractiveSession()x = tf.placeholder(tf.float32, [None, 784])W = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))y = tf.nn.softmax(tf.matmul(x, W) + b)y_ = tf.placeholder(tf.float32, [None, 10])cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)tf.global_variables_initializer().run()for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) train_step.run({x: batch_xs, y_: batch_ys})correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))print(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels}))
圖中附有我寫的解析:
這是實驗結果
點此查看github地址,建議用jupyter notebook打開,編寫環境tensorflow1.1,python3.5。
推薦閱讀:
※ai浪潮下的應對之策
※「癌症殺手」還是「讀心專家」?不充電機器人為我們打開了另一扇窗
※《數據科學家訪談錄》讀書筆記
※HealthIT智能+醫工技術創新合作計劃
※只需修改一個像素,讓神經網路連貓都認不出 | 論文+代碼
TAG:人工智慧 |