2021年9月21日火曜日

keras2.6でAttributeError: module 'keras.optimizers' has no attribute 'SGD'

参考書通りにコーディングしてみたところエラー・・・・。
たしかに環境は違うけれど困る。 

【エラーメッセージ】
>>> sgd = optimizers.SGD(lr=0.01, clipnorm=1.)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'keras.optimizers' has no attribute 'SGD'


>>> import keras
>>> keras.__version__
'2.6.0'>>> from keras import optimizers

dirコマンドでoptimizersを確認すると確かにSGDはなく、仕様が変更されたのかな・・・。
検索しても意外に情報が少なくもしかしてあたりまえ?常識

とりあえず無事別の方法を発見、ついでにオプションのlrは非推奨になったようで変わりにlearning_rateを使用するらしい。

【代替え?】
>>> sgd = optimizers.gradient_descent_v2.SGD(lr=0.001, clipnorm=1.)
/home/xx/.local/lib/python3.7/site-packages/keras/optimizer_v2/optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  "The `lr` argument is deprecated, use `learning_rate` instead.")

--------------------------------------------

【追記】

kerasはtensorflow.kerasとしてTensorFlow2にで組み込まれたようです。単独のkerasの使い方が変わっているようです。

2 件のコメント:

  1. 助かりました 
    optimizers.gradient_descent_v2.SGD(lr=0.001, clipnorm=1.) に変更して動きました。

    返信削除
  2. 7月には動いていたのに・・・

    返信削除