Back to Top

Monthly Archives: 5月 2016

TensorFlow 手書きの数字を認識する

TensorFlowで手書きの数字を認識するチュートリアルを試す。

チュートリアル

数字を認識するチュートリアル

TensorFlowのチュートリアルに関係するソースをダウンロード

git clone --recurse-submodules https://github.com/tensorflow/tensorflow

 

動作テスト

チュートリアルに書いてあるコードをコピーして保存する

mnist.py

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

import tensorflow as tf

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)

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})

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,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}))

端末にて実行

$ python mnist.py
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
0.9162
$

 

Pythonデータ型

Pythonの組み込みデータ型

 ブール
ブール値  True, False
数値型
 短整数型  32ビットの制度
 長整数型  精度の制限なし
 浮動小数点型
 複素数
 シーケンス型
 文字列
 ユニコード文字列
 リスト  数値・文字列など複数の要素の順序をつけて収めるオブジェクト
 タプル  タプルはリストに似たデータ型で、違いは書き換えができない
 バッファ
 xrange
 集合型
 セット  重複要素のないリスト(順番の概念がない)
 マップ型
 辞書  キーで要素を管理するリスト