web-dev-qa-db-ja.com

RaspberryPiでKerasを使用したTheano

TheanoをRaspberryPi 3(B)でKerasと一緒に実行しようとしていますが成功しませんでした。 Ubuntu MATEとRaspbianをオペレーティングシステムとして試しましたが、成功しませんでした。TheanoとKerasをインストールするには、次の手順を実行しました。

  1. Miniconda(armv7ディストリビューション)をインストールします
  2. Conda(可能な場合)、pipおよびapt-getを介してすべてのTheano依存関係(示されているように ここ )をインストールします
  3. Theanoをインストールする
  4. Kerasをインストールする

前述の手順は問題なく機能します。次のステップでは、作成済みのモデルをロードする小さなテストスクリプト(test.py)を作成しました。

from keras.models import load_model
model = load_model('model.hdf5')

モデルをロードしているときに、次のエラーが発生します

Segmentation fault (core dumped)

次に、SO( 何が原因でPythonセグメンテーション違反? )]に関するこの回答に従って、問題をさらに調査しようとしました。

gdb python
> run test.py

これを実行すると、次のようになります。

Program received SIGSEV, Segmentation fault.
0x76fd9822 in ?? () from /lib/ld-linux-armhf.so.3

次のステップでは、gdbシェルで実行しました。

> backtrace

#0  0x76fd9822 in ?? () from /lib/ld-linux-armhf.so.3
#1  0x76fd983a in ?? () from /lib/ld-linux-armhf.so.3

これは私がこれ以上わからない点であり、誰かがこの問題を修正してkeras + theanoをRaspberryPiで実行する方法について私に指示を与えることができるかどうか尋ねたいと思います。

(代わりにTensorFlowも試しましたが、同じ問題が発生します)

どうもありがとう。


編集

私はさらにいくつかの調査を行いました。もし私が TensorFlowでKerasを実行する の場合、問題は少し変わるようです。 gdbを再度実行しましたが、特にlibopenblas.so.0でエラーが発生します。

Program received signal SIGSEV, Segmentation fault.
0x75ead7cc in inner_thread()
from /home/<path>/numpy/core/../../../../libopenblas.so.0

これは役に立ちますか?


編集2

Minicondaを使用せずにすべてをインストールしましたが、KerasはTensorFlowで動作します(ただし、Theanoではまだ動作しません)。

28
peschn

pythonのバージョンを提供していれば、それは役に立ちました。python3.7を使用している場合は、kerasがまだ開発に追いついておらず、Python3.6に戻ってみてください。 python3.7にkerasを使用してtensorflowをインストールする際に多くの問題が発生します。最近condaを使用したインストールで同じ問題が発生し、問題がpython versionであることに気付いたため、ここではバージョンに重点を置いています。

しかし、テンソルフローをPIで機能させるのにも問題がありました。しかし、minicondaではなくubuntuのpipを使用した直接インストールを使用しましたが、機能しました。 Google Tensorflowチーム自体が言及している方法は、このリンクの指示に従って、ソースから実際にテンソルフローを構築することです。 https://www.tensorflow.org/install/source_rpi

したがって、可能であればpythonのバージョンを3.6以下にダウングレードして、pipを使用してインストールするか、python3.6または3.7を使用してソースからビルドしてみてください。

1
abhijith n raj