以下のサンプルを python インタープリター上でペーストすれば簡単に機械学習を体験できます。
mnistとは「Mixed National Institute of Standards and Technology database」の略で手書きの数字0~9 (28x28) が数万枚準備されています。初心者向けの機械学習用の画像データです。
スポンサーリンク
Python 2.7.12
Ubuntu 16.04.2 LTS
tensorflow (1.1.0)
from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf #mnist(手書きデータ)の読み込みと展開 mnist = input_data.read_data_sets("./MNIST_data/", one_hot=True) sess = tf.InteractiveSession() # フェーズ1:モデルの作成 ----------------------------------------------------------------- #クラスは0~9の10クラス #1文字のベクタ数は784 #プレイスホルダーを定義。浮動小数点の2Dテンソルを定義。Noneで任意の長さを取ることを宣言。 x = tf.placeholder(tf.float32, [None, 784]) #正解に関するプレイスホルダを定義。 y_label = tf.placeholder(tf.float32, [None, 10]) #各ベクタに対する重みをクラス数分。 W = tf.Variable(tf.zeros([784, 10])) #クラス数分のバイアスを定義 b = tf.Variable(tf.zeros([10])) #クラスごとのエビデンスを定義 y = tf.nn.softmax(tf.matmul(x, W) + b) #損失(あるいはコストとも呼ばれる)を定義。交差エントロピー(Cross Entropy)を使用。これを小さくするのが目標。 #reduce_sumで全体を加算。 ce = -tf.reduce_sum(y_label * tf.log(y)) #ceを最小化するように訓練を定義(train step) ts = tf.train.GradientDescentOptimizer(0.01).minimize(ce) #訓練を実行----------------------------------------------------------------- #変数を初期化 tf.initialize_all_variables().run() for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) ts.run({x: batch_xs, y_label: batch_ys}) #結果のテスト cp = tf.equal(tf.argmax(y, 1), tf.argmax(y_label, 1)) accuracy = tf.reduce_mean(tf.cast(cp, tf.float32)) print(accuracy.eval({x: mnist.test.images, y_label: mnist.test.labels}))
実行結果は以下の通りです。(一部省略)結果は91%の正答率となっています。
>>> print(accuracy.eval({x: mnist.test.images, y_label: mnist.test.labels})) 0.919
スポンサーリンク