Tensorflow 2.0:Optimizer.minimize('Adam' 对象没有属性 'minimize')
Tensorflow 2.0: Optimizer.minimize ('Adam' object has no attribute 'minimize')
对于我的强化学习应用程序,我需要能够应用自定义梯度/最小化变化的损失函数。根据 documentation,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'
其实还是有区别的。如果你打印两个 classes,你会看到:
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 继承自其他 class。它意味着在 Keras 训练循环中使用,因此,它没有最小化方法。为了确保,让我们获取所有 class 方法
import inspect
from tensorflow.python.keras.optimizers import Adam
print(inspect.getmembers(Adam(), predicate=inspect.ismethod))
输出显示此 class 甚至没有最小化
对于我的强化学习应用程序,我需要能够应用自定义梯度/最小化变化的损失函数。根据 documentation,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'
其实还是有区别的。如果你打印两个 classes,你会看到:
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 继承自其他 class。它意味着在 Keras 训练循环中使用,因此,它没有最小化方法。为了确保,让我们获取所有 class 方法
import inspect
from tensorflow.python.keras.optimizers import Adam
print(inspect.getmembers(Adam(), predicate=inspect.ismethod))
输出显示此 class 甚至没有最小化