こしあん
2018-07-11

Google Colaboratoryで保存したKerasのモデルを読み込むとValueError

Pocket
LINEで送る


Google Colaboratory(Colab)上のKerasでh5形式で保存したモデルをダウンロードして、load_modelすると「TypeError: (‘Keyword argument not understood:’, ‘data_format’)」とエラーが発生して読み込めないことがあります。その解決法を示します。

参考:https://github.com/keras-team/keras/issues/10075

原因はKerasのバージョンの違い

参考URLのissueと全く同じエラーが自分も発生しました。原因はGoogle Colab環境のKerasと、ローカル環境のKerasのバージョンが違うためです

インストールされているKerasのバージョンは次のように確認できます。

import keras
print(keras.__version__)
# 2.1.6

これをGoogle Colabとローカルの環境両方で実行します。自分の場合は、Google Colabが2.1.6で、ローカルが2.1.5であったためエラーが発生しました。ローカルのKerasを2.2.0にアップデートしたらTypeErrorは発生しなくなりました

モデルのh5ファイルから保存された環境のKerasのバージョンを確認するには次のようにします。

import h5py

with h5py.File("model.h5", "r") as fp:
    print(fp.attrs.get("keras_version"))
# b'2.1.6'

model.h5にファイル名を入れます。これでどのマシンで実行したか忘れてしまった場合でも対応できます。

Related Posts

WarmupとData Augmentationのバッチサイズ別の精度低下について... 大きいバッチサイズで訓練する際は、バッチサイズの増加にともなう精度低下が深刻になります。この精度低下を抑制することはできるのですが、例えばData Augmentationのようなデータ増強・正則化による精度向上とは何が違うのでしょうか。それを調べてみました。 きっかけ この記事を書いたときに...
Kerasに組み込まれているInceptionV3の実装... InceptionV3のsummary __________________________________________________________________________________________________ Layer (type) ...
Google ColabのTPU環境でmodel.fitのhistoryが消える現象... Google ColabのTPU環境でmodel.fitしたときに、通常の環境で得られるhistory(誤差や精度のログ)が消えていることがあります。その対応法を示します。 原因はTPU用のモデルに変換したから まず結論からいうとこの現象はCPU/GPU環境では再発しません。TPU環境特有の現...
Kerasに組み込まれているNASNet(Large)の実装... NASNet Largeのsummary __________________________________________________________________________________________________ Layer (type) ...
Kerasのバックエンドで「○○以上☓☓以下」を計算する方法... Kerasのバックエンド関数を使ったときに「○○以上☓☓以下」を求めたい場合があります。しかし、KerasではAndのような論理演算をすると少し困ることがあります。その方法を解説します。 10×10の行列 0~99の数字を並べた「10×10」の行列を用意します。TensorFlowのテンソルで...
Pocket
Delicious にシェア

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です