top of page

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

  • 執筆者の写真: M.R
    M.R
  • 2021年4月13日
  • 読了時間: 2分

概要


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.DataFrameをjsonで出力

概要 pythonでデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...

 
 
 
[Python] 条件付きでフィッティングをする

概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...

 
 
 

Comments


カテゴリ

あなたの買い物をサポートする
アプリ Shop Plan

iphone6.5p2.png

​いつ何を買うかの計画を立てられるアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

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

納品:iPhone6.5①.png

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

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

お問い合わせ:Twitterまでお願いします

  • Twitter
bottom of page