Playground

RaspberrypiでもKerasで深層学習したい!

Playground
この記事は約7分で読めます。
スポンサーリンク

研究でRaspberryPi内に深層学習を簡単に行えるKerasをインストールすることになりました

KerasはバックグラウンドにTensorFlowを入れる必要がありますが以前にpipで簡単に入ることを聞いていたので余裕だと思っていましたがいろいろと罠がありました

なんとか入れることができたので導入の仕方と躓いたところを書いておきます

 

はじめに

導入の基本的な仕方はTensorFlowの公式に沿って行います

そのため、仮想環境(virtualenv)のなかで構築を行っていきます

 

公式の導入方法

Install TensorFlow with pip

 

導入環境

  • 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の使い方は以下のサイトが良いと思います

Pythonの仮想環境を構築できるvirtualenvを使ってみる - Qiita
virtualenvはPythonの仮想的な環境を作ることができるパッケージ。 プロジェクトごとにPythonのバージョンを変えたり、必要なパッケージを分けてインストールして動かす事ができるようになります。 ##インストール ##...

 

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です

 

躓いた点

  1. 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版でビルドしているものをインストールしました

    lhelontra/tensorflow-on-arm
    TensorFlow for Arm. Contribute to lhelontra/tensorflow-on-arm development by creating an account on GitHub.

    ※現時点(2018/11/27)では、1.11.0が最新でした

  2. python3.6にしてからTensorFlowの導入
    RaspberryPiは2.7と3.5がデフォルトではいっています
    個人的には3.5は古い印象があったのでpython3.6でインストールしようとやっていましたが罠がありました罠というのはKerasを動かすのに必要なScipyとh5pyのインストールです
    めっちゃくちゃ時間かかります
    回避方法として”apt-get”で入れる方法もありましたが、仮想環境では認識してくれず、結局scipyとh5pyのインストールをしてしまいます
    時間をかければ3.6でもTensorFlow・Kerasの環境構築ができますが、今回は見送りました
  3. module compiled against API version 0xc but this version of numpy is 0xa の回避
    $ pip install numpy --upgrade

     

  4. 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')]

     

参考文献

コメント

タイトルとURLをコピーしました