2020年11月の中頃あたりから機械学習を行う際にTensorflowバックエンドのKerasを用いると掲題のエラーが発生するようになった。備忘録も兼ねて以下に記していく。
発生箇所
どうやら推論時に学習モデルをロードする際に当該のエラーが発生している。
モデルは.h5
形式をロードしている。
KerasやTensorflowはインストール時にライブラリのバージョンを指定してインストールしているので
特に問題ないはずと考え、他の依存性のありそうなライブラリを調査した。
ちなみにKeras・Tensorflowは以下のバージョンを使用している際にエラーが発生している。
- Keras:2.3.1
- Tensorflow:1.14
上記が最新ではないため発生していることも考えられるが、今回は上記バージョンでの利用を前提とし、エラー解消に臨む。
対処
案の定モデルをロードする際に利用するライブラリのバージョンが問題だった。
h5py
というライブラリの最新バージョン3.1.0
がインストールされており、それが利用されることでエラーが発生している。
Googlecolabなどで標準に使用されているのは現状では2.10.0
である。
h5pyはKerasのインストール時に付随して最新版がインストールされてしまうため、Kerasより先にh5pyだけバージョン指定してインストールするか、h5pyをアンインストール後バージョンを指定して再インストールすればよい。
インストール
コマンドでのインストール
(以下ではpip3を用いているが環境によってコマンドは変更する)
# まずはバージョン確認
pip3 show h5py
# アンインストール
sudo pip3 uninstall h5py
# バージョン指定インストール
sudo pip3 install h5py==2.10.0
新規にインストールするのみの場合はKerasやTensorflowのインストールより先にh5pyを個別にバージョン指定してインストールしてやるのが良いだろう。
記事紹介
以下にて実機ロボットを使った機械学習を行っています。よろしければご参照ください。
LEGO Mindstorms×AI 機械学習その1 環境構築編
LEGO Mindstorms×AI 機械学習その2 線形回帰編
LEGO Mindstorms×AI 機械学習その3 分類編