色々ありまして、月に1回技術ブログを更新しないといけなくなりました。 資格試験とか興味ある本とかも読んだら更新しますが、そちらは趣味です。 IT関係の記事は半分お仕事なので、これから頑張って更新したいと思います。
やりたいこと
せっかく機械学習かじってみてるのでちょっとむずかしいことやってみたくなりました、はい。 やりたいこと決めないと実装できないので、先にやりたいことを考えてみました。
今のご時世、AI(あんまりこの呼び方好きじゃないので、以後「機械学習」を使います)を活用するって言うと食いつき良いし、 そもそも機械学習が盛り上がり始めたのがディープラーニングっていうこともあり、ディープラーニングをやってみようと思いました。
ちょうどこの間のGTC JAPANでもNVIDIAの人がプログレッシブGANっていうのを紹介していました。
プログレッシブGANについてはこちらが分かりやすかったです。
ここまで面白いことができるようになるかはわかりませんが、 なんか面白いことができるように頑張ります。 (ブログが書ける程度に死ぬ気で勉強します。笑)
環境構築
TensorFlow
ニューラルネットワークなんて学生だったころに後輩がやってて面白そうって思ってた程度で、やったことないです。 ちょっと調べたら機械学習ライブラリを使うってことだったので、メジャーなTensorFlowを使うことにしました。
Chainerにしようか一瞬悩んだんですが、「気に入らなかったら変えればいいや」くらいのノリでTensorFlowにしました。
導入手順(※本来ならこちら)
本家のインストール手順(英語)を見ていただければと思います。
Installing TensorFlow | TensorFlow
基本的にはインストール手順をなぞってもらえればできるはずです。 私の環境は下の通りでしたが問題なくインストールできました。
- macbook air (Mac OS X 10.13.1)
- anaconda Command line client (version 1.6.3)
- Python 2.7.13
しかし、マニュアルどおりインストールしてみたら、「SSE命令が使えるよ」とワーニングが出ました。 せっかくなので、SSE命令も使えるようにしてやろうってことで、ちょっと特殊なインストールをすることに。
導入手順(特殊なインストール)
参考にしたのはこちら。
拡張命令セットでTensorFlowをコンパイルする方法 - Qiita
anaconda のインストール
とりあえずanacondaのインストール www.continuum.io
Bazelをインストール
brew install bazel
TensorFlowのソースコードをcloneする
git clone https://github.com/tensorflow/tensorflow
configurationをいじる
cd tensorflow ./configure
いろいろ聞かれますが、今回は全てデフォルト設定のため、Enterキー連打。
コンパイル
bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.1 --copt=-msse4.2 -k //tensorflow/tools/pip_package:build_pip_package
ものすごーーーーーく時間かかるので、お茶でもしててください。環境次第だとは思いますが、寝てても平気かもしれないです。
このときは軽く1時間超えました。4時間くらいかかりました。
配布パッケージ作成
インストールするパッケージを作成します。
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
仮装環境の作成
あまり良くわかってないのですが、仮想環境を作るそうです。
conda create -n tensorflow python=2.7 anaconda
最近は仮想環境を使うんですね、勉強になります。
仮想環境の起動
仮想環境を起動するとtensorflowが使えるようになります。
source activate tensorflow
仮想環境内でコンパイルしたパッケージをインストール
pip install /tmp/tensorflow_pkg/{パッケージ名}.whl
私の場合はこんなファイルになってます。
pip install /tmp/tensorflow_pkg/tensorflow-1.4.0-cp27-cp27m-macosx_10_7_x86_64.whl
なにはともあれHello World
ここまででインストールできているはずなので、動作確認としてHello Wolrdのコードを実行。
$ 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
こんな感じで出てくればインストールされて、晴れてTensorFlowが使えるように。 意外と時間かかりましたが、ワーニングは無くなりましたし、動きそうです。
追記)PATHの設定
どうやら環境によってPythonをどこから呼び出しているか違うらしく、場合によっては環境変数の設定が必要みたいです。
export PYTHONPATH = $PYTHONPATH:/usr/local/lib/pythonX.X/site-packages/
bashrcに記載したら動きました。