Tensorflow 2.0: Optimizer.minimize (объект «Адам» не имеет атрибута «свернуть») - PullRequest
2 голосов
/ 01 апреля 2019

Для моего приложения «Обучение усилению» мне нужно иметь возможность применять собственные градиенты / минимизировать изменение функции потерь.Согласно документации , это должно быть возможно с помощью функции 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'

1 Ответ

3 голосов
/ 01 апреля 2019

На самом деле есть разница. Если вы напечатаете оба класса, вы увидите:

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'>

Так что в первом случае Адам наследует от какого-то другого класса. Он предназначен для использования внутри цикла обучения Keras, поэтому в нем нет метода минимизации. Чтобы убедиться, давайте получим все методы класса

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

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

Вывод показывает, что этот класс даже не имеет минимизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...