web-dev-qa-db-ja.com

TypeError:オプティマイザに渡された予期しないキーワード引数:learning_rate

Azure VM(NC promo)でトレーニングされたKerasモデルをロードしようとしていますが、次のエラーが発生します。

TypeError:予期しないキーワード引数がoptimizer:learning_rateに渡されました

編集:

これが、モデルのロードに使用しているコードスニペットです。

from keras.models import load_model
model = load_model('my_model_name.h5')
9
Chayan Bansal

Tensorflowライブラリを(更新されたバージョンで)再インストールして解決し、nvcuda.dllファイルをsystem32フォルダーに配置しました。

0
Chayan Bansal

カスタムオプティマイザを使用しましたか?

もしそうなら、あなたはこのようにロードすることができます:

_model = load_model('my_model_name.h5', custom_objects={
    'Adam': lambda **kwargs: hvd.DistributedOptimizer(keras.optimizers.Adam(**kwargs))
})
_

または、model = load_model('my_model_name.h5', compile=False)を使用してモデルをロードし、オプティマイザを追加して再コンパイルすることもできますが、保存した重みが失われます。

7
Rob Bricheno

2台の異なるPCで作業しているときに同じエラーが発生しました。 tensorflowの一部のバージョンではtf.keras.optimizers.SGD(lr = x)ですが、他のバージョンではistf.keras.optimizers.SGD(学習率= x)です。

7
Walter Jacquet

これも私に起こりました。ほとんどの場合、learning_rateは、2018年9月にバージョン2.2。*から2.3.0に名前が変更されました(リリースノートを参照: https://github.com/keras-team/keras/releases :lrの名前をlearning_rateに変更してすべてのオプティマイザ。)

これは私のために働きました:Sudo pip install keras --upgrade

6
MichaelF

私の場合、以前の投稿で提案されているように、h5pyを使用して変数の名前を "learning_rate"-> "lr"から変更するのが最善の解決策であることがわかりました。

import h5py
data_p = f.attrs['training_config']
data_p = data_p.decode().replace("learning_rate","lr").encode()
f.attrs['training_config'] = data_p
f.close()
4
felipk101

私も同じ問題を抱えていました。 Kerasバージョン2.3.1とTensorFlow-GPUバージョン1.13を使用して、Tensorflow-GPUをバージョン1.15にアップグレードする必要がありました

pip uninstall tensorflow-gpu
pip install tensorflow-gpu==1.15
1
Edgar Huber

そのモデルがトレーニングされているカーネルとモデルがロードされている依存関係バージョンとの間の依存関係の違いに関する通常の問題。

今すぐTensorflowの最新バージョン(2.1)をインストールしている場合は、 this のようなモデルをロードしてみてください。

import tensorflow as tf
print(tf.__version__)
print("Num GPUs Available: ", 
       len(tf.config.experimental.list_physical_devices('GPU')))
# Checking the version for incompatibilities and GPU list devices 
# for a fast check on GPU drivers installation. 

model_filepath = './your_model_path.h5'

model = tf.keras.models.load_model(
    model_filepath,
    custom_objects=None,
    compile=False
)

Compile=Falseモデルがすでにコンパイルされている場合のみ。

0
Victor Cid

私も同じことに遭遇しました。 Tensorlfow 2.0とKerasにアップグレードするか、2つのシステムを一致させる必要があります。

0
MNM

同様の問題がありました。

この問題が発生した場合は、オプティマイザで学習率を定義するときにlearning_rateではなくlrを使用してみてください。

0
okliam

別のマシンにモデルをロードしようとしたときにも、この問題が発生しています。 Azure VMの初期モーダルもトレーニングしました。上記の提案を試しましたが、何が原因なのかわかりません。他に何か考えはありますか?以下は、モデルをトレーニングするためのコードです。

モデルはトレーニングされ、次のバージョンを使用して私のAPIプロジェクトで使用されています:keras 2.3.0 tensorflow 1.14.0

history = model.fit(X, y,validation_split=0.1, \
                epochs=20, \
                batch_size=1000, \
                class_weight = cw)
0
Tyler Gasperlin