BLOG

主に学んだことの備忘録を書いています。

  1. HOME
  2. ブログ
  3. Python
  4. 【エラー】TypeError: (‘Keyword argument not understood:’, ‘data_format’)
TypeError: ('Keyword argument not understood:', 'data_format')

【エラー】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'))
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

関連記事