私の強化学習申請のために、私はカスタムグラデーションを適用することができます/損失の変化機能を最小化する必要があります。 ドキュメンテーション 、それは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'
_
実際には違いがあります。両方のクラスを印刷すると、次のようになります。
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))
_
出力はこのクラスさえ最小化されていないことを示しています