Azure VM(NC promo)でトレーニングされたKerasモデルをロードしようとしていますが、次のエラーが発生します。
TypeError:予期しないキーワード引数がoptimizer:learning_rateに渡されました
編集:
これが、モデルのロードに使用しているコードスニペットです。
from keras.models import load_model
model = load_model('my_model_name.h5')
Tensorflowライブラリを(更新されたバージョンで)再インストールして解決し、nvcuda.dllファイルをsystem32フォルダーに配置しました。
カスタムオプティマイザを使用しましたか?
もしそうなら、あなたはこのようにロードすることができます:
_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)
を使用してモデルをロードし、オプティマイザを追加して再コンパイルすることもできますが、保存した重みが失われます。
2台の異なるPCで作業しているときに同じエラーが発生しました。 tensorflowの一部のバージョンではtf.keras.optimizers.SGD(lr = x)ですが、他のバージョンではistf.keras.optimizers.SGD(学習率= x)です。
これも私に起こりました。ほとんどの場合、learning_rate
は、2018年9月にバージョン2.2。*から2.3.0に名前が変更されました(リリースノートを参照: https://github.com/keras-team/keras/releases :lrの名前をlearning_rateに変更してすべてのオプティマイザ。)
これは私のために働きました:Sudo pip install keras --upgrade
私の場合、以前の投稿で提案されているように、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()
私も同じ問題を抱えていました。 Kerasバージョン2.3.1とTensorFlow-GPUバージョン1.13を使用して、Tensorflow-GPUをバージョン1.15にアップグレードする必要がありました
pip uninstall tensorflow-gpu
pip install tensorflow-gpu==1.15
そのモデルがトレーニングされているカーネルとモデルがロードされている依存関係バージョンとの間の依存関係の違いに関する通常の問題。
今すぐ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
モデルがすでにコンパイルされている場合のみ。
私も同じことに遭遇しました。 Tensorlfow 2.0とKerasにアップグレードするか、2つのシステムを一致させる必要があります。
同様の問題がありました。
この問題が発生した場合は、オプティマイザで学習率を定義するときにlearning_rate
ではなくlr
を使用してみてください。
別のマシンにモデルをロードしようとしたときにも、この問題が発生しています。 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)