LoginSignup
2
3

More than 5 years have passed since last update.

TensorFlow 環境構築 + fully_connected_feed.py 実行を3分でやってみる

Last updated at Posted at 2016-12-02

はじめに

機械学習およびディープラーニングの代表的なライブラリ/フレームワークの一つであるTensorFlowに関して、初めて動かす人向けのメモです。いろんなサイトを参考にさせていただきましたが、自身のマシンの環境などで違ったエラーが出たりするかもしれないので、手順のセクションで、うまくいかなかった場合、ヒントになるようなことが参考にあるかもしれないです。

この記事では Ubuntuの場合とOSXの場合を紹介します。

OS X

OSX環境で実行したい場合はこちらが圧倒的に参考になります

http://senyoltw.hatenablog.jp/entry/2016/05/07/231041

環境

Screen Shot 2016-12-03 at 02.11.59.png

  • 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行目を次のように修正します

修正前.py
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.examples.tutorials.mnist import mnist
修正後.py
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行目を次のように修正します

修正前.py
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.examples.tutorials.mnist import mnist
修正後.py
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で試す際にトライアンドエラーした順番に並べています。この知見を得た上で上の手順のセクションを書きました。

ベースはこちらを参考にしました

http://d.hatena.ne.jp/shu223/20160105/1451952796

「動作確認:Hello World を実行してみる」ってとこまではうまくできました。
途中で

.....(略).....
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
.....(略).....

みたいなのが怒られて、.bashrcに以下を追記みたいな感じでした。記事は以下のものを参考にしました。

http://d.hatena.ne.jp/tkrd/20120828/1346123699

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

http://stackoverflow.com/questions/40513466/tensorflow-retrain-py-app-run-got-unexpected-keyword-argument-argv

みたいな感じで成功です。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3