研究でRaspberryPi内に深層学習を簡単に行えるKerasをインストールすることになりました
KerasはバックグラウンドにTensorFlowを入れる必要がありますが以前にpipで簡単に入ることを聞いていたので余裕だと思っていましたがいろいろと罠がありました
なんとか入れることができたので導入の仕方と躓いたところを書いておきます
はじめに
導入の基本的な仕方はTensorFlowの公式に沿って行います
公式の導入方法

導入環境
- Raspberrypi 3
- Python 3.5.3
アップデートと仮想環境の構築
rasbianをインストールしてからはじめにやる儀式と仮想環境を作っていきます
まずはupdate等をしてパッケージを最新にします
アップデートしたら再起動をかけて落ち着きます
sudo apt update
sudo apt -y upgrade
sudo reboot
つぎにpythonなどをインストールします
sudo apt install python3-dev python3-pip
sudo pip3 install -U virtualenv
sudo apt install libatlas-base-dev #numpyエラーの回避
libatlas-base-devをインストールしないとnumpyを使うときにエラーがでるので導入しておきます
仮想環境の作成
TensorFlow・Kerasを動かすための仮想環境(virtualenv)を作っていきます
#作成
virtualenv --system-site-packages -p python3 ./venv
#起動
#"(venv) pi@raspberrypi:~ $ "となる
source ./venv/bin/activate
virtualenvの使い方は以下のサイトが良いと思います

TensorFlow・Kerasの導入
ついにTensorFlowとKerasを入れていきます
TensorFlowの導入については公式とは異なる入れ方をします(理由は後述の躓いた点にて)
#TensorFlowのインストール
wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.11.0/tensorflow-1.11.0-cp35-none-linux_armv7l.whl
pip install tensorflow-1.11.0-cp35-none-linux_armv7l.whl
rm tensorflow-1.11.0-cp35-none-linux_armv7l.whl
#Kerasのインストール
pip install keras
あとはPythonを起動してkerasをインポートしてあげてエラーがでなければおkです
躓いた点
-
TensorFlowの導入 公式の方法だと以下のように入れています
pip install --upgrade tensorflow
しかしこれを導入後、Kerasをインストールしインポートすると以下のエラーがでます
Using TensorFlow backend. /home/pi/venv/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) /home/pi/venv/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: builtins.type size changed, may indicate binary incompatibility. Expected 432, got 412 return f(*args, **kwds)
ネットで検索すると結構問題になっているようです どうやらtensorflowのプログラムの一部がpython3.4用でpython3.5では動かないかもというエラーのようです
そのため、TensorFlowのバージョンは最新ではありませんが、arm版でビルドしているものをインストールしました
https://github.com/lhelontra/tensorflow-on-arm/releases/
※現時点(2018/11/27)では、1.11.0が最新でした
-
python3.6にしてからTensorFlowの導入 RaspberryPiは2.7と3.5がデフォルトではいっています 個人的には3.5は古い印象があったのでpython3.6でインストールしようとやっていましたが罠がありました罠というのはKerasを動かすのに必要なScipyとh5pyのインストールです めっちゃくちゃ時間かかります 回避方法として”apt-get”で入れる方法もありましたが、仮想環境では認識してくれず、結局scipyとh5pyのインストールをしてしまいます 時間をかければ3.6でもTensorFlow・Kerasの環境構築ができますが、今回は見送りました
-
module compiled against API version 0xc but this version of numpy is 0xa の回避
pip install numpy --upgrade
-
pipがサポートしている.whlを調べる方法 TensorFlowを入れるために.whlにて導入しています これはどれでもいいわけではなく、pipがサポートしているものにものをインストールしなければなりません pythonを起動し以下のコマンドを打つと対応しているwhlを確認することができます
pi@raspberrypi:~ $ python >>> from pip._internal.pep425tags import get_supported >>> get_supported() [('cp35', 'cp35m', 'linux_armv7l'), ('cp35', 'abi3', 'linux_armv7l'), ('cp35', 'none', 'linux_armv7l'), ('cp34', 'abi3', 'linux_armv7l'), ('cp33', 'abi3', 'linux_armv7l'), ('cp32', 'abi3', 'linux_armv7l'), ('py3', 'none', 'linux_armv7l'), ('cp35', 'none', 'any'), ('cp3', 'none', 'any'), ('py35', 'none', 'any'), ('py3', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]
参考文献
- TensorFlow, https://www.tensorflow.org/install/pip?lang=python3
- Keras, https://keras.io/ja/