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でデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...
現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud...
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...
Yorumlar