web-dev-qa-db-ja.com

TensorFlow 2.0:Optimizer.Minimize( 'ADAM'オブジェクトには属性 '最小化がありません)

私の強化学習申請のために、私はカスタムグラデーションを適用することができます/損失の変化機能を最小化する必要があります。 ドキュメンテーション 、それはOptimizer.Minimize()関数を使用して可能になります。ただし、PIPインストール版のバージョンは、この機能をまったくありません。

私のコード:

from tensorflow.python.keras.optimizers import Adam, SGD
print(tf.version.VERSION)
optim = Adam()
optim.minimize(loss, var_list=network.weights)
 _

出力:

2.0.0-alpha0
Traceback (most recent call last):
  File "/Users/ikkamens/Library/Preferences/PyCharmCE2018.3/scratches/testo.py", line 18, in <module>
    optim.minimize(loss, var_list=network.weights)
AttributeError: 'Adam' object has no attribute 'minimize'
 _
4
ikamen

実際には違いがあります。両方のクラスを印刷すると、次のようになります。

from tensorflow.python.keras.optimizers import Adam

print(Adam)
print(tf.optimizers.Adam)

<class 'tensorflow.python.keras.optimizers.Adam'>
<class 'tensorflow.python.keras.optimizer_v2.adam.Adam'>
 _

そのため、最初のケースでADAMは他のクラスから継承しています。それはKERASトレーニングループ内で使用されることを意味しています。したがって、それは最小化方法を持っていません。確かめるために、すべてのクラスメソッドを取得しましょう

import inspect
from tensorflow.python.keras.optimizers import Adam

print(inspect.getmembers(Adam(), predicate=inspect.ismethod))
 _

出力はこのクラスさえ最小化されていないことを示しています

4
Sharky