標籤:

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:人工智慧 |