TensorFlowのMNIST For ML Beginnersを実行する

TensorFlowのMNIST For ML Beginnersを実行する
この記事は最終更新から5年以上経過しています。内容が古くなっている可能性があります。

Machine Learning界の “Hello World!”であるMNISTをTensorFlowで実行した際のメモ。自分用に実行コードにコメントを入れただけなので、細かな説明は一切ありません。

  • OS:Windows10
  • TensorFlow-CPU版のバージョン:1.9

MNIST For ML Beginnersとは

Machine Learningでの “Hello World!”に相当するプログラム。アメリカ国立標準技術研究所提供の手書き数字データに対して教師あり学習を行い、数字の分類を行う。

・MNIST For ML Beginners

実行コード

# プログラムの読み出し
from tensorflow.examples.tutorials.mnist import input_data

# 「MNIST_data」フォルダを作成し、データをダウンロード
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

# TensorFlowをインポートし、「tf」という別名をつける
import tensorflow as tf

# 画像データ用に784個の空の入れ物を作成
x = tf.placeholder(tf.float32, [None, 784])

# 重み用の変数を初期値0で作成
W = tf.Variable(tf.zeros([784,10]))

# バイアス用の変数を初期値0で作成
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]))

# 学習率を0.5とし、勾配降下法を用いてクロスエントロピーを最小化するよう定義
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

# 変数の初期化
init = tf.initialize_all_variables()

# セッションの作成
sess = tf.Session()

# セッションの開始及び初期化
sess.run(init)

#1000回学習する
for i in range(1000):

  #トレーニングデータからランダムに100個抽出する
  batch_xs, batch_ys = mnist.train.next_batch(100)

  #勾配降下法によりクロスエントロピーを最小化するように重みを更新する
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

 #予測値と正解値を比較し、True or Falseで返す
 #argmax(y,1)は予測値の各行で最大となるインデックスをひとつ返す
 correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

 #True,Falseをcastで0もしくは1に変換して平均値を求め、精度を算出する。
 accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

 #テストデータを用いて作成されたモデルの精度を計測
 print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
0.9196

結果:約92%の正解率

TensorFlowカテゴリの最新記事


Warning: Use of undefined constant XML - assumed 'XML' (this will throw an Error in a future version of PHP) in /home/kkmax/kkmax-develop.com/public_html/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1048