読者です 読者をやめる 読者になる 読者になる

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

アラフォープログラマーが数学と物理を基礎からやり直す

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

機械学習 tensorflow 人工知能

はじめに

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

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

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

環境

インストール準備

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

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

VirtualBoxUbuntu(64bit)をインストール

下記サイトを参考にVirtualBoxUbuntu 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」
これはVirtualBoxUbuntu 32bit用に64bit版をインストールしようとしたためです。
何故、VirtualBoxUbuntu 64bit用がリストに表示されないのかというと、PCのBIOSの仮想化機能が有効になっていないためです。有効にするためには、BIOSの設定(Lenovoでは再起動時にF1キーを押す等)で、Security→Vitualizationを「Enabled」にして保存後に再起動する必要があります。

クリップボードの共有

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

ターミナルの起動

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

pipのインストール

ターミナルが起動したら、最初に「pip」をインストールして下さい。
pipとは、Pythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システムです。RubyRubyGemsPerlCPANWindowsの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にしたのは、サイト「Learning TensorFlow」を参考にしたためです。

ターミナル上で「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用環境を作成するため、ターミナル上で下記のコマンドを入力します。
サイト「Learning TensorFlow」と一緒にするため、名前は「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を始められます。