2016年08月31日
_ [computer] TensorFlowを、Windows10のBashにインストール
先日碁のプロ棋士を破って話題になったGoogleのAlphaGoですが、AIとしてニューラルネットワークを使用している情報に衝撃をうけまして、先日大阪に行った折、大きな書店に寄り、ニューラルネットワークによるデープラーニングの本を2冊ほど買って帰りました。この2冊です。
コンピュータで実装できる物なので、パソコン上でも実際に動かせる環境とかあるだろうと思っていたのですが、「イラストで学ぶディープラーニング」の方にそういった解説も有り、その中のGoogleが提供しているTensorFlowをインストールしてみることにしました。
TensorFlowの実行環境はUbuntuかOS-Xらしいので、Ubuntuを何処かにインストールしようかと思って居たとき、PC WatchでWin10のBashについての西川和久氏コラム(http://pc.watch.impress.co.jp/docs/column/nishikawa/1017333.html)を読みました。それによると、「WindowsにおけるBashは、GUIなしのUbuntuと何ら変わらない・・」らしいです。
そういう事ならば、"Bash on Win10"にTensorFlowをインストール出来るだろうと、直ぐやってみました。普通のUbuntuと同じで、殆ど問題なくインストール出来ます。
とりあえず、
$ sudo apt-get update
$ sudo apt upgrade
をやってみますが、全く普通のUbuntuの様に終わります。
実際のインストールのやり方は、TensorFlowのHPの"Download and Setup"(https://www.tensorflow.org/versions/r0.10/get_started/os_setup.html#download-and-setup)に書かれていますので、その通りにやればOKです。(結構簡単)
幾つか方法が書かれていますが、"Virtualenv install"が良さそうなので、virtualenvを使う方法でやってみました。pythonとpip、開発環境とvirtualenvをインストールします。
$ sudo apt-get install python-pip python-dev python-virtualenv
環境を作ります。
$ virtualenv --system-site-packages ~/tensorflow
アクティベイトします。
$ source ~/tensorflow/bin/activate
とりあえずGPUを使わないCPUのみのTensorFlowをインストールします。
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl
(tensorflow)$ pip install --upgrade $TF_BINARY_URL
終わった後は、以下のコマンドでデアクティブ、また開始する場合はアクティブします。
(tensorflow)$ deactivate ## ==> 無効化 ##
$ source ~/tensorflow/bin/activate ## ==> 有効化 ##
ちゃんと動くかどうかは、TensorFlowのHPのとおり、まずpythonを起動して1行づつのコマンドを入れてみて確かめます。
(tensorflow)$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
ちゃんとアンサーが出たら、次は、いくつかあるチュートリアルの中の、"MNIST For ML Beginners"というものをやってみます。HPで1行づつ解説してくれていますが、"mnist_softmax.py"プログラムを走らせてみます。これは手書き数字の画像認識らしいのですが、データのダウンロードから、認識まで、全部自動でやってくれます。ちゃんとそれらしい答えが出るので、上手くいっているのでしょうが、プログラムを見ても、まだ何が何だかさっぱりです。まぁ、とりあえず動いたと言うだけです。
(tensorflow)$ python mnist_softmax.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting /tmp/data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting /tmp/data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting /tmp/data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz
0.92
ちなみに、興味を持つきっかけとなったGoogleのAlphaGoですが、実際の動作の仕組みを考察したHP(http://www.slideshare.net/yuk1yoshida/alphago-61311712)を読んでみますと、(十分理解出来ない点も多々ありますが)別にデープラーニングした能力だけで碁を指している訳では無いようですね。色々な方策を併用して、また大量のリソースを用いた力技も使って、手を指していそうです。