Raspberry piでkerasを使う時に注意すること


概要


Raspberry piでディープラーニングをしようと思いkerasをインストールしたら、importの時点で以下のエラーが出る


ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject

ModuleNotFoundError: No module named 'tensorflow.contrib'



原因


どうも、tensorflowとkerasのバージョンが合っていないことが原因らしい。Raspberry pi 用のOSであるRaspbian用のtensorflowの最新バージョンは未だ1.14でしかない、、、

kerasとtensorflowのバージョン対応関係はよくわかっていないが、pipでバージョン指定せずにインストールしたため、kerasの方に新しいバージョンが入ってしまったのではないかと推測している。



解決策


tensorflow内部のtensorflow.kerasを使う。これならばバージョンの依存関係の問題は起きない。というかkeras自体がこの流れになっているらしい(マルチバックエンドKerasの終焉、tf.kerasに一本化)。

すでにkerasでプログラムを書いてしまっている場合でも

import tensorflow.keras as keras

としてしまえばほとんどそのまま使える。


ほとんど、と言ったのは、僕の場合1点だけそのまま使えない部分があったため。

model=keras.models.load_model(model_name)

とすると、以下のエラーが発生。

str' object has no attribute 'decode'

これはh5pyのバージョンが新しいせいのようだ。h5pyを2.10.0にダウングレードしたら解決した。(参考


また、学習は別の環境で行っている場合は(というかその方が多いと思うが)、そちらの環境のtensorflowのバージョンも下げて学習し直す必要がある。Mac、Windows、google colaboratoryなどではバージョン指定しないと最新のtensorflow2.xが入ると思う。



最後に


バージョンの依存関係には気を付けましょう、、、

最新記事

すべて表示

概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を求める、という感じです。 f(x, a, b)=a*x^2+b (a>0 and b>0) 今回はそんな手法についてご紹介しま

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

テーマ日記:テーマを決めてジャンルごとに記録

訂正①2040×1152.jpg

ジャンルごとにテーマ、サブテーマをつけて投稿、記録できる日記アプリです。

google-play-badge.png