CodeLab技術ブログ

プログラミング技術まとめ

ラズパイで機械学習させる(tensorflowtoのインストール)

Raspberry Pi2を買ったままずっと放置しているのでちょっといじってみました。
Raspbianで公式にtensorflowが対応したらしいので、ちょっと試しに入れてみました。

Raspbianのバージョンは以下の通りでした。執筆時時点(2018年9月末)の最新版になります。

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch

pythonはpyenvで入れてもいいのですが、今回はデフォルトで入っているpython3をそのまま使うことにします。
バージョンは3.5.3でした。

pi@raspberrypi:~ $ python3 -V
Python 3.5.3

まず初めに、swapを増やしておきましょう。インストール時にアプリをコンパイルしなければならない場合があるようで、デフォルトの設定ではメモリが足りずハングアップしてしまうことがあるようです。この手順であればおそらくデフォルト設定でも大丈夫そうではありますが、念のため。
とりあえず、最大値の2048(2Gバイト)で設定しておけばよいかと思います。
Raspbianのスワップメモリを変更

システムの更新とアップグレードを行います。その後、tensorflowに必要なモジュールを入れておきます。

sudo apt update
sudo apt upgrade
sudo apt install python3-pip python3-dev python3-numpy python3-scipy python3-pandas python3-h5py libatlas-base-dev

それでは、本体を入れていきます。
昔のバージョンでは、ソースをもってきていろいろやらなければなりませんでしたが、現在の最新の環境では、公式で対応したようでpip3から直接インストールが可能になりました。(ちょっと時間がかかりました20分ぐらい?)
sudo pip3 install tensorflow
早速動かしてみましょー。

pi@raspberrypi:~ $ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: compiletime version 3.4 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.5
return f(*args, **kwds)
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: builtins.type size changed, may indicate binary incompatibility. Expected 432, got 412
return f(*args, **kwds)
/usr/lib/python3/dist-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters

なんか動いたんだけどワーニングが出てる…。
調べてみましたが、どうもtensofflowが要求するnumpyのバージョンとあってないのが原因の模様。ただ、害はないらしいのでとりあえずこれで大丈夫なようです。

ついでなので、kerasもインストール

sudo pip3 install keras

同じワーニングは出ますがとりあえずinportはできたので動きそうです。
pi@raspberrypi:~ $ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keras
/usr/lib/python3/dist-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
Using TensorFlow backend.
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: compiletime version 3.4 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.5
return f(*args, **kwds)
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: builtins.type size changed, may indicate binary incompatibility. Expected 432, got 412
return f(*args, **kwds)
>>>

以前のバージョンでは、いろいろ複雑が手順が必要でコンパイルも必要で、非力なラズパイではインストールに相当な時間がかかったようですが、現在ではバイナリ提供されているので手間がかなり軽減されています。
せっかくだから何か作ってみたいですね。


コメントは受け付けていません。