Python3環境でTensorFlowのMNISTチュートリアルを試しました。 Qiitaに丁寧に解説された記事があがっていたので、そこに掲載されているサンプルコードをコピペ(Python3に合わせて一部修正)で動かしました。
どういった処理を行っているかについては、正直に言ってさっぱりなのですがまずは動作を確認できたという所で一歩進めたかと思います。
# -*- coding: utf-8 -*- from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf import time start_time = time.time() print("開始時刻: " + str(start_time)) print("--- MNISTデータの読み込み開始 ---") mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) print("--- MNISTデータの読み込み完了 ---") 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_sum(y_*tf.log(y)) train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) print("--- 訓練開始 ---") for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys}) print("--- 訓練終了 ---") correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) print("精度") print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) end_time = time.time() print("終了時刻: " + str(end_time)) print("かかった時間: " + str(end_time - start_time))
結果
$ python mnist_for_ml_beginners.py 開始時刻: 1479552572.434575 --- MNISTデータの読み込み開始 --- 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 --- MNISTデータの読み込み完了 --- --- 訓練開始 --- --- 訓練終了 --- 精度 0.9085 終了時刻: 1479552576.449984 かかった時間: 4.015408992767334
90%強の精度結果でした。