デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理と英語を基礎からやり直す。https://qiita.com/yaju

WindowsユーザーがTensorFlowをインストールしてみた

はじめに

静岡Developers勉強会では、今年の勉強会のテーマとして「人工知能ハンズオン」を予定しています。
人工知能ハンズオンとして、Googleが提供しているオープンソースの人工知能ライブラリ「TensorFlow」の使い方を学ぶという方向にでもしようかな。
とりあえずセッションを担当する自分が現状では何も分かっていない状態ですので、先ずは「TensorFlow」を自PCにインストールしてみました。

TensorFlow Ver 0.12でWindowsがサポートされましたので、記事を作成しました。
yaju3d.hatenablog.jp

もはやLinux版の環境が古くなったため、新しく記事を作成しました。
yaju3d.hatenablog.jp

インストールがお手軽なDocker版も一緒にお読み下さい。
yaju3d.hatenablog.jp

アクセス解析をみると「tensorflow 32bit版」があったので下記サイトをリンクしておきます。
TensorFlowを32bit-Ubuntuにインストールした時のメモ | Workpiles

環境

  • Windows 10 Home 64bit
  • Oracle VM VirtualBox 5.0.16

インストール準備

残念ながら、「TensorFlow」はLinux版とMac版しか用意されていません。
Windows PCをお持ちの方は、仮想PCにLinuxを入れて使用するということになります。

ちなみに、Python数値計算環境「Anaconda」のWindows版を入れれば動くかもと、「TensorFlow」をインストールしようとしましたが、Linux版やMac版のどちらを入れても、「not supported」エラーとなりました。AnacondaのWindows版はあくまでWindows上として動作するためでした。

VirtualBoxにUbuntu(64bit)をインストール

下記サイトを参考にVirtualBoxにUbuntu 14.04.2 LTSをインストールしました。
サイトとの違いとして、メモリは2048MByte、仮想ハードドライブサイズは40GByteにしています。
ottan.xyz

このままでは画面サイズは640x480と狭いので、下記サイトを参考に画面サイズを変更します。
opensourcetech.hatenablog.jp

インストール時のエラー

Ubuntu(64bit)を入れようとするとPCによっては下記のエラーが出ます。
「This kerner requures an X86-64 CPU, but only detected an i686 CPU」
これはVirtualBoxのUbuntu 32bit用に64bit版をインストールしようとしたためです。
何故、VirtualBoxにUbuntu 64bit用がリストに表示されないのかというと、PCのBIOSの仮想化機能が有効になっていないためです。有効にするためには、BIOSの設定(Lenovoでは再起動時にF1キーを押す等)で、Security→Vitualizationを「Enabled」にして保存後に再起動する必要があります。

クリップボードの共有

Ubuntuのインストールが完了したら、VirtualBoxメニューのデバイスの「クリップボードの共有」を双方向にしておくとWindowsのクリップボードを貼り付け出来たりして便利です。また、「ドラッグ&ドロップ」も同様に双方向にするといいでしょう。

ターミナルの起動

Ubuntuを使うのは初めてだったので、何をどうすればいいのかちょっと迷いました。
先ずはWindowsのコマンドプロンプトのようなのを起動する必要があります。
Ubuntuの左横のパネルメニューから「コンピューターとオンラインリソースの検索」をクリックします。
検索ボックスで「terminal」を入力すると「端末」(ターミナル)が出てきますのでクリックします。

pipのインストール

ターミナルが起動したら、最初に「pip」をインストールして下さい。
pipとは、Pythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システムです。RubyのRubyGemsやPerlのCPANやWindowsのNuGetといったところです。
ターミナル上で下記のコマンドを入力します。

$ sudo apt-get install python-pip

※$より前の部分は自分の環境では「yaju@yaju-VirtualBox:~$」です。これはインストール環境によって変わります。説明する上で便宜上省略しています。

Python数値計算環境「Anaconda」のLinux版をインストール

AnacondaとはPythonの数値計算環境を構築するために様々なパッケージをまとめた無料のディストリビューションです。
Anacondaをインストールをすると、NumPy,SciPy,matplotlib、scikit-learn等のパッケージがインストールされます。

Ubuntu上のWebブラウザ「FireFox」で下記サイトからAnaconda for Linux PYTHON 3.5 LINUX 64-BITをダウンロードしてください。ファイルの保存先は「ダウンロード」にしました。
https://www.continuum.io/downloads

※Python2.7ではなくPython3.5にしたのは、サイト「http://learningtensorflow.com/lesson1/」を参考にしたためです。

ターミナル上で「bash 」と入力したら、Ubuntuの左横のパネルメニューから「ファイル」からダウンロードフォルダにある「Anaconda3-2.5.0-Linux-x86_64.sh」をドラッグ&ドロップしました。引用符は付いたままでもいいかも知れませんが、一応消しました。

$ bash /home/yaju/ダウンロード/Anaconda3-2.5.0-Linux-x86_64.sh

AnacondaのTensorflow用環境を作成

Anacondaのインストールが終わったら、一旦ターミナルを閉じて下さい。
これはTensorflow用環境を作成する際に使用する「conda」コマンドがまだ有効になっていないためです。

Tensorflow用環境を作成するため、ターミナル上で下記のコマンドを入力します。
サイト「http://learningtensorflow.com/lesson1/」と一緒にするため、名前は「tensorenv」にしました。envは環境(environment)の略称

$ conda create --name=tensorenv python=3.4

環境が作成されていきます、途中のProceedの確認は「y」を入力します。

Proceed ([y]/n)? y

Fetching packages ...
openssl-1.0.2g 100% |################################| Time: 0:00:08 383.49 kB/s
xz-5.0.5-1.tar 100% |################################| Time: 0:00:03 174.33 kB/s
python-3.4.4-0 100% |################################| Time: 0:00:37 430.92 kB/s
setuptools-20. 100% |################################| Time: 0:00:01 268.10 kB/s
wheel-0.29.0-p 100% |################################| Time: 0:00:00 133.57 kB/s
pip-8.1.1-py34 100% |################################| Time: 0:00:04 376.02 kB/s
Extracting packages ...
[      COMPLETE      ]|###################################################| 100%
Linking packages ...
[      COMPLETE      ]|###################################################| 100%

以下のコマンドで作った環境の一覧を表示できます。

$ conda info -e

Using Anaconda Cloud api site https://api.anaconda.org
# conda environments:
#
tensorenv                /home/yaju/anaconda3/envs/tensorenv
root                  *  /home/yaju/anaconda3

作成した環境を有効にするには下記のコマンドを入力します。

$ source activate tensorenv

これで先頭に「(tensorenv)」が付くようになります。

(tensorenv)$

pipのバージョン確認

TensorFlowをインストールしようした際、pipのバージョン 8.1.1でないと下記のエラーが表示されます。

You are using pip version 8.0.2, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

下記のコマンドでpipのバージョンが確認できます。

(tensorenv)$ pip -V

もし、pipのバージョン 8.1.1でない場合、下記のコマンドでpipをアップグレードします。

(tensorenv)$ pip install --upgrade pip

※tensorenvの環境を有効にしないまま、TensorFlowをインストールしようとしたからpipのバージョン 8.0.2のままだったのかも。tensorenvの環境を有効にしたなら、pipのバージョン 8.1.1がインストールされているはず。

TensorFlowのインストール

TensorFlowには、「CPU only」と「GPU enabled」の2種類が用意されています。今回は「CPU only」版をインストールします。
ファイル名はPython34にしているので「tensorflow-(version No)-cp34」となります。ちなみにPython27は「cp27」です。
バージョンは現時点(2016/03/27)で最新の「0.7.1」を入れます。
入力が長いのでクリップボードにコピーして貼り付ければいいです。

(tensorenv)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl

Building wheels for collected packages: numpy あたりで10分程度かかりました。

Collecting tensorflow==0.7.1 from https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl
  Downloading https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl (13.8MB)
    100% |████████████████████████████████| 13.8MB 36kB/s 
Requirement already up-to-date: wheel>=0.26 in ./anaconda3/envs/tensorenv/lib/python3.4/site-packages (from tensorflow==0.7.1)
Collecting numpy>=1.8.2 (from tensorflow==0.7.1)
  Downloading numpy-1.10.4.tar.gz (4.1MB)
    100% |████████████████████████████████| 4.1MB 79kB/s 
Collecting six>=1.10.0 (from tensorflow==0.7.1)
  Downloading six-1.10.0-py2.py3-none-any.whl
Collecting protobuf==3.0.0b2 (from tensorflow==0.7.1)
  Downloading protobuf-3.0.0b2-py2.py3-none-any.whl (326kB)
    100% |████████████████████████████████| 327kB 315kB/s 
Collecting setuptools (from protobuf==3.0.0b2->tensorflow==0.7.1)
  Downloading setuptools-20.3.1-py2.py3-none-any.whl (508kB)
    100% |████████████████████████████████| 512kB 276kB/s 
Building wheels for collected packages: numpy
  Running setup.py bdist_wheel for numpy ... done
  Stored in directory: /home/yaju/.cache/pip/wheels/66/f5/d7/f6ddd78b61037fcb51a3e32c9cd276e292343cdd62d5384efd
Successfully built numpy
TensorFlowのインストールエラー

途中で下記のエラーが発生してインストールが止まります。

Installing collected packages: numpy, six, setuptools, protobuf, tensorflow
Found existing installation: setuptools 20.3
Cannot remove entries from nonexistent file /home/yaju/anaconda3/envs/tensorenv/lib/python3.4/site-packages/easy-install.pth

これは、パッケージの依存関係のコンフリクトっぽいので対象パッケージをremoveしてから再度Tensorflowをインストールします。

conda remove -n tensorenv setuptools

途中のProceedの確認は「y」を入力します。

Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ....

Package plan for package removal in environment /home/yaju/anaconda3/envs/tensorenv:

The following packages will be REMOVED:

    setuptools: 20.3-py34_0

Proceed ([y]/n)? y

Unlinking packages ...
[      COMPLETE      ]|###################################################| 100%
TensorFlowの再インストール

コマンド入力したのは履歴が残っていますので、矢印の上キーを入力すると楽です。

(tensorenv)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl

setuptoolsのコンフリクトを解消させてからTensorFlowのインストールすれば再インストールする必要はないんですが、既にインストールされている部分は飛ばすので時間はかかりません。

Collecting tensorflow==0.7.1 from https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl
  Using cached https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl
Requirement already up-to-date: wheel>=0.26 in ./anaconda3/envs/tensorenv/lib/python3.4/site-packages (from tensorflow==0.7.1)
Requirement already up-to-date: numpy>=1.8.2 in ./anaconda3/envs/tensorenv/lib/python3.4/site-packages (from tensorflow==0.7.1)
Requirement already up-to-date: six>=1.10.0 in ./anaconda3/envs/tensorenv/lib/python3.4/site-packages (from tensorflow==0.7.1)
Collecting protobuf==3.0.0b2 (from tensorflow==0.7.1)
  Using cached protobuf-3.0.0b2-py2.py3-none-any.whl
Collecting setuptools (from protobuf==3.0.0b2->tensorflow==0.7.1)
  Using cached setuptools-20.3.1-py2.py3-none-any.whl
Installing collected packages: setuptools, protobuf, tensorflow
Successfully installed protobuf-3.0.0b2 setuptools-20.3.1 tensorflow-0.7.1

TensorFlowの動作確認

バージョンが表示されればインストール成功です。

(tensorenv)$python -c "import tensorflow; print(tensorflow.__version__);"

0.7.1

これでやっとTensorFlowを始められます。

WindowsユーザーのTensorFlowことはじめ

はじめに

静岡Developers勉強会では、今年の勉強会のテーマとして「人工知能ハンズオン」を予定しています。
前記事にて、自PCに「TensorFlow」をインストールしてみました。
インストールしただけで、「TensorFlow」がどういったものなのかをまったく理解出来ていません。
ネットで検索した幾つかのサイトを参考にこれから理解していこうと思います。

Pythonの入門として、勉強会仲間であるUsekさんの記事を参考にするといいでしょう。
qiita.com

エディタについて

TensorFlowはPythonを使ってプログラムしていくのですが、エディタが無いことにはプログラムを組みにくいですよね。
以前、静岡Developers勉強会で「実践コンピュータービジョン」を行った際、Python向け統合環境(IDE)の「PyCharm」を使っていました。
その後、もう少し手軽なものとして「IPython Notebook」というPythonのコードを含んだWebページを作成できるものを教わったので、今回はこちらを使用していきます。

IPython Notebookは、その後に多言語対応したこともあって、「Jupyter」という名前に変更されていました。

Jupyter Notebook(IPython)のインストール

下記サイトを参考に「Jupyter Notebook」をインストールしました。
www.task-notes.com

※Anacondaでは最初からインストール済みなんですが、自分はTensorFlow専用の環境(tensorenv)を作成しているため、インストールする必要がある。

tensorenvの環境を有効にしてから、pipコマンドでインストール

$ source activate tensorenv

(tensorenv)$ pip install jupyter 

Jupyterの起動

(tensorenv)$ jupyter notebook

Webブラウザが起動しますので、そこからanaconda3/envs/tensorenvフォルダまで移動させます。
f:id:Yaju3D:20160327185255p:plain

更にtensorenvフォルダ配下に移動して、右横の「New」で新規ファイルを「Python 3」で作成します。
f:id:Yaju3D:20160327192015p:plain

それでは、下記サイトの演算を実際に実行してみましょう。
qiita.com

では、実際にTensorFlowを使って計算してみます。最初は、以下の式を書いてみます
y = x^2 + b

import tensorflow as tf

def x2_plus_b(x, b):
    _x = tf.constant(x)
    _b = tf.constant(b)
    result = tf.square(_x)
    result = tf.add(result, _b)
    return result

print resultではエラーとなったため、print(result)に修正しました。

with tf.Session() as sess:
    result = sess.run([x2_plus_b(2., 3.)])
    print(result)

実行結果(printの出力)は以下のようになります。
2^2 + 3 = 7 なので、きちんと計算できていることがわかります。
f:id:Yaju3D:20160327205925p:plain

TensorBoardによる可視化

TensorFlowには、TensorBoardという強力なビジュアライゼーションツールが付いている点も特徴の一つになっています。

先ほどの続きとして下記ソースを入力します。

import tensorflow as tf

def monitor_calculation(x, b):
    title = "b = {0}".format(b)
    c = x2_plus_b(float(x), float(b))
    s = tf.scalar_summary(title, c)
    m = tf.merge_summary([s])  # if you are using some summaries, merge them
    return m

with tf.Session() as sess:
    writer = tf.train.SummaryWriter("log", graph_def=sess.graph_def)    
    xaxis = range(-10, 12)

    for b in range(3):
        for x in xaxis:
            summary_str = sess.run(monitor_calculation(x, b))
            writer.add_summary(summary_str, x)

これを実行すると、ログがフォルダ(/home/yaju/anaconda3/envs/tensorenv/log)に出力されます。
f:id:Yaju3D:20160327225938p:plain

Jupyterの停止

TensorBoardのコマンドはターミナルで行うので、Jupyterの停止する必要があります。
停止するには、ターミナルにて「Ctrl + C」キーを押します。

追記 2016/04/07
Jupyterの右横にある「New」に「Terminal」がありました。
これを使えば、Jupyterを停止する必要はありません。

TensorBoardの実行

logdirには絶対パスを指定します。

(tensorenv)$ tensorboard --logdir=/home/yaju/anaconda3/envs/tensorenv/log

Starting TensorBoard  on port 6006
(You can navigate to http://0.0.0.0:6006)

Webブラウザにて、下記URLを入力します。

localhost:6006

f:id:Yaju3D:20160327231243p:plain

今回はここまでとします。

スポンサーリンク