ロボットを作る

子供のころ、映画「STARWARS」 を観てワクワクし、ガンプラにドキドキしていた。時間が経つのも忘れてしまう、そんな時間をもう一度、取り戻すために、Raspberry pi を使って、オヤジがロボット作りに挑戦する!

やり始めてみると、なかなか思い通りに行かない。時間の経つのも忘れて悪戦苦闘中。 「こんなちっちゃな Raspberry Pi で、こんなことができるんだ」を日々実感している今日この頃。

2016年05月

Tensorflow を勉強するために用意されているチュートリアルをやってみようと思った。
Qiita の記事にも登場しているので先達さんたちの日本語記事を参考にやっていこう。

本家チュートリアル
https://www.tensorflow.org/versions/master/tutorials/index.html
では、以下が用意されている。下から3つ目のように学習データの落とし方も含んでいるのだが。

 MNIST For ML Beginners
 Deep MNIST for Experts
 TensorFlow Mechanics 101
 TensorFlow Serving
 Convolutional Neural Networks
 Vector Representations of Words
 Recurrent Neural Networks
 Sequence-to-Sequence Models
 Mandelbrot Set
 Partial Differential Equations
 MNIST Data Download
 Image Recognition
 Deep Dream Visual Hallucinations



まずは一番初級 MNIST For ML Beginners から


(tensorflow)take@ubuntu:~/tensorflow$ more mnist_for_ml_beginners.py
# -*- coding: utf-8 -*-
import tensorflow as tf
import input_data

# MNISTデータを取り出す。訓練データとテストデータで、画像と0-9のラベル
# mnist.train.images
# mnist.train.labels
# mnist.test.images
# mnist.test.labels
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

# Training用の入れ物の準備
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

# y_ : 正しい答え
# y  : 予測した答え
y_ = tf.placeholder(tf.float32, [None, 10])

#  x*W+b を softmax と通し、y にする。
y = tf.nn.softmax(tf.matmul(x, W) + b)

# Training指標の準備
# 訓練するために、悪い(or 良い)を定義する。ここでは悪い(費用:コストがかかる)ことを
# 交差エントロピーで計算する。
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, "float"))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
(tensorflow)take@ubuntu:~/tensorflow$



走らせてみる。



(tensorflow)take@ubuntu:~/tensorflow$ python mnist_for_ml_beginners.py

Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting MNIST_data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz

0.9183
(tensorflow)take@ubuntu:~/tensorflow$

正解率は、91.8%



Ubuntu(Vmplayer 上の GuestOS) に Tensorflowを入れてみる。

$ uname -a
Linux ubuntu 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$


# $ python —version
Python 2.7.6

# virtualenv による環境準備

$ pip install virtualenv  ←  エラーになった
Could not find any downloads that satisfy the requirement vertualenv

$sudo apt-get install python-virtualenv

$ mkdir ~/tensorflow
$ virtualenv -—system-site-packages ~/tensorflow
$ cd ~/tensorflow
$ source bin/activate

# TensorFlowのインストール
(tensorflow)$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl

# お約束の Hello world! を
(tensorflow)$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import tensorflow as tf
>>> hello=tf.constant('Hello, Tensorflow!')
>>> sess=tf.Session()
>>> print sess.run(hello)
Hello, Tensorflow!
>>> a=tf.constant(5)
>>> b=tf.constant(17)
>>> print sess.run(a+b)
22
>>>

↑このページのトップヘ