はじめに
機械学習およびディープラーニングの代表的なライブラリ/フレームワークの一つであるTensorFlowに関して、初めて動かす人向けのメモです。いろんなサイトを参考にさせていただきましたが、自身のマシンの環境などで違ったエラーが出たりするかもしれないので、__手順__のセクションで、うまくいかなかった場合、ヒントになるようなことが__参考__にあるかもしれないです。
この記事では __Ubuntu
の場合とOSX
__の場合を紹介します。
OS X
OSX環境で実行したい場合はこちらが圧倒的に参考になります
環境
- OSX 10.11.4 El Capitan
- Python 2.7.10
$ python -V
Python 2.7.10
手順
[1]. 環境構築
pip
とかが入っていない場合はsudo easy_install pip
で入れてあげて、以下のようにtensorflow環境を整えます。
$ sudo easy_install pip
$ sudo pip install --upgrade virtualenv
ここで、他のPython環境でいろいろ問題を起こさないように、仮想環境としてtensorflow
というディレクトリを用意します。
$ mkdir ~/tensorflow
$ virtualenv --system-site-packages ~/tensorflow
いよいよ、仮想環境内でtensorflow
をインストールします。
$ source ~/tensorflow/bin/activate
(tensorflow) $ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl
また補足として、$ deactivate
で抜けることができます。
[2]. チュートリアルのコードの準備
任意のディレクトリで(今回はworkdir
にしました)修正されているブランチのチュートリアルコードをclone
してきます
workdir$ git clone -b r0.11 https://github.com/tensorflow/tensorflow.git
workdir$ cd tensorflow/
[3]. fully_connected_feed.py の実行
まず、好きなエディタで
fully_connected_feed.py
の30,31行目を次のように修正します
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.examples.tutorials.mnist import mnist
import input_data
import mnist
最後に実行してみます
workdir$ cd tensorflow/
workdir/tensorflow$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/t10k-labels-idx1-ubyte.gz
Step 0: loss = 2.30 (0.016 sec)
Step 100: loss = 2.17 (0.011 sec)
Step 200: loss = 1.91 (0.011 sec)
Step 300: loss = 1.65 (0.011 sec)
Step 400: loss = 1.36 (0.013 sec)
Step 500: loss = 0.91 (0.012 sec)
Step 600: loss = 0.83 (0.012 sec)
Step 700: loss = 0.74 (0.012 sec)
Step 800: loss = 0.62 (0.013 sec)
Step 900: loss = 0.60 (0.012 sec)
Training Data Eval:
Num examples: 55000 Num correct: 47143 Precision @ 1: 0.8571
Validation Data Eval:
Num examples: 5000 Num correct: 4308 Precision @ 1: 0.8616
Test Data Eval:
Num examples: 10000 Num correct: 8595 Precision @ 1: 0.8595
Step 1000: loss = 0.39 (0.013 sec)
Step 1100: loss = 0.52 (0.100 sec)
Step 1200: loss = 0.44 (0.012 sec)
Step 1300: loss = 0.40 (0.013 sec)
Step 1400: loss = 0.52 (0.012 sec)
Step 1500: loss = 0.34 (0.012 sec)
Step 1600: loss = 0.40 (0.011 sec)
Step 1700: loss = 0.30 (0.012 sec)
Step 1800: loss = 0.37 (0.012 sec)
Step 1900: loss = 0.27 (0.012 sec)
Training Data Eval:
Num examples: 55000 Num correct: 49315 Precision @ 1: 0.8966
Validation Data Eval:
Num examples: 5000 Num correct: 4509 Precision @ 1: 0.9018
Test Data Eval:
Num examples: 10000 Num correct: 8949 Precision @ 1: 0.8949
こんな感じになれば成功です。
Ubuntu
環境
- Ubuntu 14.04.5
$ lsb_release -a
LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:security-4.0-amd64:security-4.0-noarch:security-4.1-amd64:security-4.1-noarch
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
- Python 2.7.6
$ python -V
Python 2.7.6
手順
[1]. 環境構築
pip
とかが入っていない場合はsudo easy_install pip
で入れてあげて、以下のようにtensorflow環境を整えます。
$ sudo pip install --upgrade virtualenv
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
$ sudo pip install --upgrade pip
[2]. チュートリアルのコードの準備
OSXと同様です。一応以下にも同じことを書きます。
任意のディレクトリで(今回はworkdir
にしました)修正されているブランチのチュートリアルコードをclone
してきます
workdir$ git clone -b r0.11 https://github.com/tensorflow/tensorflow.git
workdir$ cd tensorflow/
[3]. fully_connected_feed.py の実行
OSXと同様です。一応以下にも同じことを書きます。
まず、好きなエディタで
fully_connected_feed.py
の30,31行目を次のように修正します
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.examples.tutorials.mnist import mnist
import input_data
import mnist
最後に実行してみます
workdir$ cd tensorflow/
workdir/tensorflow$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/t10k-labels-idx1-ubyte.gz
Step 0: loss = 2.30 (0.016 sec)
Step 100: loss = 2.17 (0.011 sec)
Step 200: loss = 1.91 (0.011 sec)
Step 300: loss = 1.65 (0.011 sec)
Step 400: loss = 1.36 (0.013 sec)
Step 500: loss = 0.91 (0.012 sec)
Step 600: loss = 0.83 (0.012 sec)
Step 700: loss = 0.74 (0.012 sec)
Step 800: loss = 0.62 (0.013 sec)
Step 900: loss = 0.60 (0.012 sec)
Training Data Eval:
Num examples: 55000 Num correct: 47143 Precision @ 1: 0.8571
Validation Data Eval:
Num examples: 5000 Num correct: 4308 Precision @ 1: 0.8616
Test Data Eval:
Num examples: 10000 Num correct: 8595 Precision @ 1: 0.8595
Step 1000: loss = 0.39 (0.013 sec)
Step 1100: loss = 0.52 (0.100 sec)
Step 1200: loss = 0.44 (0.012 sec)
Step 1300: loss = 0.40 (0.013 sec)
Step 1400: loss = 0.52 (0.012 sec)
Step 1500: loss = 0.34 (0.012 sec)
Step 1600: loss = 0.40 (0.011 sec)
Step 1700: loss = 0.30 (0.012 sec)
Step 1800: loss = 0.37 (0.012 sec)
Step 1900: loss = 0.27 (0.012 sec)
Training Data Eval:
Num examples: 55000 Num correct: 49315 Precision @ 1: 0.8966
Validation Data Eval:
Num examples: 5000 Num correct: 4509 Precision @ 1: 0.9018
Test Data Eval:
Num examples: 10000 Num correct: 8949 Precision @ 1: 0.8949
こんな感じになれば成功です。
参考サイト
私がUbuntuで試す際にトライアンドエラーした順番に並べています。この知見を得た上で上の手順のセクションを書きました。
ベースはこちらを参考にしました
「動作確認:Hello World を実行してみる」ってとこまではうまくできました。
途中で
.....(略).....
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
.....(略).....
みたいなのが怒られて、.bashrc
に以下を追記みたいな感じでした。記事は以下のものを参考にしました。
export LC_ALL=en_US.UTF-8
ここで、「fully_connected_feed.py を実行します。」あたりで
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
Traceback (most recent call last):
.....(略).....
ImportError: /home/hiroki11x/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so: invalid ELF header
そのため
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.6.0-cp27-none-linux_x86_64.whl
とすると
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
ImportError: No module named contrib.learn.python.learn.datasets.mnist
みたいなことで怒られる
同じことで困ってる人がいたので、以下のstackoverflowを参考に
$ sudo apt-get install python-pip python-dev
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
http://stackoverflow.com/questions/37002134/having-error-with-tensorflow-mnist
をするとこれについては直ったが
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
.....(略).....
ImportError: No module named protobuf
となる、
mac環境でpython3.3以上の場合はsix
が必要らしいのと、いろいろ、違うバージョンのprotobuf
が入ってしまったようなので以下を実行
$ sudo easy_install --upgrade six
$ sudo pip install --upgrade
$ sudo pip uninstall protobuf
$ sudo pip install protobuf
次に、
$ python fully_connected_feed.py 10
Traceback (most recent call last):
File "fully_connected_feed.py", line 279, in <module>
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
TypeError: run() got an unexpected keyword argument 'argv'
が出てくるので、その問題を解決してるブランチがあるっぽいので、そっちをcloneすることに
$ git clone -b r0.11 https://github.com/tensorflow/tensorflow.git
$ cd tensorflow/
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/t10k-labels-idx1-ubyte.gz
Step 0: loss = 2.30 (0.016 sec)
Step 100: loss = 2.17 (0.011 sec)
Step 200: loss = 1.91 (0.011 sec)
Step 300: loss = 1.65 (0.011 sec)
Step 400: loss = 1.36 (0.013 sec)
Step 500: loss = 0.91 (0.012 sec)
Step 600: loss = 0.83 (0.012 sec)
Step 700: loss = 0.74 (0.012 sec)
Step 800: loss = 0.62 (0.013 sec)
Step 900: loss = 0.60 (0.012 sec)
Training Data Eval:
Num examples: 55000 Num correct: 47143 Precision @ 1: 0.8571
Validation Data Eval:
Num examples: 5000 Num correct: 4308 Precision @ 1: 0.8616
Test Data Eval:
Num examples: 10000 Num correct: 8595 Precision @ 1: 0.8595
Step 1000: loss = 0.39 (0.013 sec)
Step 1100: loss = 0.52 (0.100 sec)
Step 1200: loss = 0.44 (0.012 sec)
Step 1300: loss = 0.40 (0.013 sec)
Step 1400: loss = 0.52 (0.012 sec)
Step 1500: loss = 0.34 (0.012 sec)
Step 1600: loss = 0.40 (0.011 sec)
Step 1700: loss = 0.30 (0.012 sec)
Step 1800: loss = 0.37 (0.012 sec)
Step 1900: loss = 0.27 (0.012 sec)
Training Data Eval:
Num examples: 55000 Num correct: 49315 Precision @ 1: 0.8966
Validation Data Eval:
Num examples: 5000 Num correct: 4509 Precision @ 1: 0.9018
Test Data Eval:
Num examples: 10000 Num correct: 8949 Precision @ 1: 0.8949
みたいな感じで成功です。