トップ «前の日記(2016年08月24日) 最新 次の日記(2016年09月08日)» 編集

xiphioの備忘録


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)を読んでみますと、(十分理解出来ない点も多々ありますが)別にデープラーニングした能力だけで碁を指している訳では無いようですね。色々な方策を併用して、また大量のリソースを用いた力技も使って、手を指していそうです。