【エラー】TypeError: (‘Keyword argument not understood:’, ‘data_format’)
以前作成した画像分類機を起動したところ下記のエラーが出てしまった。
TypeError: ('Keyword argument not understood:', 'data_format')
この対処法を探してみると、
stackoverflowのサイトに同じエラーの投稿があった。
https://stackoverflow.com/questions/50830736/typeerror-keyword-argument-not-understood-data-format
Kerasのバージョン不一致によるエラーとのこと。解決策として、作成済みファイルを作った時のKerasと、このファイルを実行しようとしている時のKerasのバージョンを合わせることでエラーが解決するらしい。
リンク先のサイトでは、
$ pip install --upgrade keras
こちらの実行で、Kerasを最新版にアップグレードすることで解決するとのこと。
で、私の環境では、以前の実行しようとしているファイルを作成した時のKerasのバージョンが調べられず、作った日時はわかっていたので、その時の最新のKerasのバージョンを予測して、Kerasをインストールしなおしたがエラーは変わらず。
一応、Kerasのバージョンを遡って実行した方法を書きます。
Kerasのバージョン確認
$ pip list | grep Keras
Kerasをアンインストール
$ sudo pip uninstall keras
Kerasのバージョン指定してインストール
$ pip install keras==2.0.2
*PermissionError: [Errno 13] Permission denied:
で、拒否される場合は、
$ sudo pip install keras==2.0.2
と、
sudo
をつけて実行する。
他のライブラリのバージョン確認やインストールについては、
Python、TensorFlow周辺の環境設定まとめを参照。
結局、Pythonの環境を現在の最新のバージョンで作り直し、KerasやTensorflowなどをインストールして、以前のKerasを用いて作ったファイルを作り直した。その後、同じ実行環境で、画像分類機を実行したところ成功した。
このような、バージョン管理については、成功した環境を、
$ python -m pip freeze
これで書き出したあとに、.txtファイルに保存しておき、再現したいときに
$ python -m pip install -r requirements.txt
これを実行して一括インストールすることでうまくいくと思う。
このrequirements.txtの書き方は、
numpy==1.11.0
six==1.10.0
このように羅列する。
他にも似たようなエラーの投稿を見つけた。
こっちは、末尾の文字列が、data formatではなく、nb depthになっている。
https://stackoverflow.com/questions/44135232/keras-typeerror-keyword-argument-not-understood-nb-depth
この場合は、カーネルサイズを指定する必要があるとのこと。
# こっちはエラー
kernel_size=3
model = Sequential()
model.add(Convolution3D(nb_filters[0], kernel_size,nb_depth=nb_conv[0], nb_row=nb_conv[0],
nb_col=nb_conv[0],input_shape=(1, img_rows, img_cols, patch_size),
activation='relu'))
「フィルタの数の直後にカーネルサイズを指定する必要があります。たとえば、次のようになります。」
# こっちが正しい。
kernel_size = 3
model.add(Convolution3D(nb_filters[0], kernel_size, nb_depth=nb_conv[0], nb_row=nb_conv[0],
nb_col=nb_conv[0],input_shape=(1, img_rows, img_cols, patch_size),
activation='relu'))
スギヤマです。
主にガジェットいじりに関わる記事を投稿します。
この記事へのコメントはありません。