tf.keras.optimizers.Adamax
| Просмотреть исходный код на GitHub |
Оптимизатор, реализующий алгоритм Adamax.
Наследуется от: Optimizer
tf.keras.optimizers.Adamax(
learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, name='Adamax',
**kwargs
)
Это вариант Adam, основанный на бесконечной норме. Значения по умолчанию соответствуют значениям, предоставленным в статье. Adamax иногда превосходит adam, особенно в моделях с эмбеддингами.
Инициализация:
m = 0 # Initialize initial 1st moment vector v = 0 # Initialize the exponentially weighted infinity norm t = 0 # Initialize timestep
Правило обновления параметра w с градиентом g описано в конце раздела 7.1 статьи:
t += 1 m = beta1 * m + (1 - beta) * g v = max(beta2 * v, abs(g)) current_lr = learning_rate / (1 - beta1 ** t) w = w - current_lr * m / (v + epsilon)
Аналогично Adam, epsilon добавляется для повышения числовой устойчивости (особенно для устранения деления на ноль, когда v_t == 0).
В отличие от Adam, разреженный метод реализации этого алгоритма (используется, когда градиент является объектом IndexedSlices, обычно из-за tf.gather или поиска эмбеддинга в прямом проходе) обновляет только срезы переменных и соответствующие m_t, v_t члены, когда эта часть переменной использовалась в прямом проходе. Это означает, что разреженное поведение контрастирует с плотным поведением (аналогично некоторым реализациям импульса, которые игнорируют импульс, если срез переменной фактически не использовался).
| Аргументы | |
|---|---|
learning_rate | Значение Tensor, число с плавающей запятой или расписание, являющееся tf.keras.optimizers.schedules.LearningRateSchedule. Скорость обучения. |
beta_1 | Число с плавающей запятой или константа тензор с плавающей запятой. Экспоненциальная скорость затухания для оценок первого момента. |
beta_2 | Число с плавающей запятой или константа тензор с плавающей запятой. Экспоненциальная скорость затухания для экспоненциально взвешенной бесконечной нормы. |
epsilon | Малая константа для числовой устойчивости. |
name | Необязательное имя для операций, созданных при применении градиентов. По умолчанию "Adamax". |
**kwargs | Параметры ключевых слов. Допустимо одно из "clipnorm" или "clipvalue". "clipnorm" (число с плавающей запятой) ограничивает градиенты по норме; "clipvalue" (число с плавающей запятой) ограничивает градиенты по значению. |
Ссылка:
| Аргументы | |
|---|---|
name | Непустая строка. Имя для аккумуляторов, созданных для оптимизатора. |
**kwargs | Параметры ключевых слов. Допустимо {clipnorm, clipvalue, lr, decay}. clipnorm ограничивает градиенты по норме; clipvalue ограничивает градиенты по значению, decay включено для обратной совместимости, чтобы позволить обратное затухание скорости обучения. lr включено для обратной совместимости, рекомендуется использовать learning_rate вместо него. |
| Исключения | |
|---|---|
ValueError | Если имя имеет неправильный формат. |
| Атрибуты | |
|---|---|
iterations | Переменная. Количество шагов обучения, выполненных этим оптимизатором. |
weights | Возвращает переменные этого оптимизатора в порядке их создания. |
Методы
add_slot
add_slot(
var, slot_name, initializer='zeros'
)
Добавляет новую переменную хранилища для var.
add_weight
add_weight(
name, shape, dtype=None, initializer='zeros', trainable=None,
synchronization=tf.VariableSynchronization.AUTO,
aggregation=tf.compat.v1.VariableAggregation.NONE
)
apply_gradients
apply_gradients(
grads_and_vars, name=None, experimental_aggregate_gradients=True
)
Применяет градиенты к переменным.
Это вторая часть minimize(). Возвращает Operation, который применяет градиенты.
Метод суммирует градиенты со всех реплик при наличии tf.distribute.Strategy по умолчанию. Вы можете самостоятельно агрегировать градиенты, передав experimental_aggregate_gradients=False.
Пример:
grads = tape.gradient(loss, vars)
grads = tf.distribute.get_replica_context().all_reduce('sum', grads)
# Processing aggregated gradients.
optimizer.apply_gradients(zip(grads, vars),
experimental_aggregate_gradients=False)
| Аргументы | |
|---|---|
grads_and_vars | Список пар (градиент, переменная). |
name | Необязательное имя для возвращаемой операции. По умолчанию совпадает с именем, переданным в конструктор Optimizer. |
experimental_aggregate_gradients | Необходимо ли суммировать градиенты от разных реплик при наличии tf.distribute.Strategy. Если False, ответственность за агрегирование градиентов лежит на пользователе. По умолчанию True. |
| Возвращаемое значение | |
|---|---|
Operation, применяющий указанные градиенты. iterations увеличится автоматически на 1. |
| Исключения | |
|---|---|
TypeError | Если grads_and_vars имеет неправильный формат. |
ValueError | Если у ни одной из переменных нет градиентов. |
from_config
@classmethod
from_config(
config, custom_objects=None
)
Создаёт оптимизатор из его конфигурации.
Этот метод является обратным к get_config, и позволяет восстановить тот же оптимизатор из словаря конфигурации.
| Аргументы | |
|---|---|
config | Словарь Python, обычно результат get_config. |
custom_objects | Словарь Python, сопоставляющий имена с дополнительными объектами Python, используемыми для создания этого оптимизатора, например функцией, используемой для гиперпараметра. |
| Возвращаемое значение | |
|---|---|
| Экземпляр оптимизатора. |
get_config
get_config()
Возвращает конфигурацию оптимизатора.
Конфигурация оптимизатора — это словарь Python (сериализуемый), содержащий конфигурацию оптимизатора. Этот же оптимизатор можно повторно создать из этой конфигурации позже (без сохранения состояния).
| Возвращаемое значение | |
|---|---|
| Словарь Python. |
get_gradients
get_gradients(
loss, params
)
Возвращает градиенты loss относительно params.
| Аргументы | |
|---|---|
loss | Тензор потерь. |
params | Список переменных. |
| Возвращаемое значение | |
|---|---|
| Список тензоров градиентов. |
| Исключения | |
|---|---|
ValueError | В случае, если какой-либо градиент не может быть вычислен (например, если функция градиента не реализована). |
get_slot
get_slot(
var, slot_name
)
get_slot_names
get_slot_names()
Список имён хранилищ этого оптимизатора.
get_updates
get_updates(
loss, params
)
get_weights
get_weights()
Возвращает текущие веса оптимизатора.
Веса оптимизатора — это его состояние (т.е., переменные). Эта функция возвращает значения весов, связанные с этим оптимизатором, в виде списка массивов Numpy. Первое значение всегда — счётчик итераций оптимизатора, за которым следуют переменные состояния оптимизатора в порядке их создания. Возвращённый список можно использовать для загрузки состояния в аналогично параметризованные оптимизаторы.
Например, оптимизатор RMSprop для этой простой модели возвращает список из трёх значений — счётчик итераций, за которым следуют среднеквадратичные значения ядра и смещения единственного слоя Dense:
opt = tf.keras.optimizers.RMSprop()
m = tf.keras.models.Sequential([tf.keras.layers.Dense(10)])
m.compile(opt, loss='mse')
data = np.arange(100).reshape(5, 20)
labels = np.zeros(5)
print('Training'); results = m.fit(data, labels)
Training ...
len(opt.get_weights())
3
| Возвращает | |
|---|---|
| Значения весов в виде списка массивов numpy. |
minimize
minimize(
loss, var_list, grad_loss=None, name=None
)
Минимизировать loss путём обновления var_list.
Этот метод просто вычисляет градиент с помощью tf.GradientTape и вызывает apply_gradients(). Если вы хотите обработать градиент перед применением, то вызовите tf.GradientTape и apply_gradients() явно вместо использования этой функции.
| Аргументы | |
|---|---|
loss | Функция без аргументов, возвращающая значение для минимизации. |
var_list | Список или кортеж объектов Variable, которые нужно обновить для минимизации loss, или функция, возвращающая список или кортеж объектов Variable . Используйте функцию, когда список переменных в противном случае будет неполным до minimize, так как переменные создаются в первый раз, когда вызывается loss. |
grad_loss | Необязательно. Объект Tensor, содержащий вычисленный для loss градиент. |
name | Необязательное имя возвращаемой операции. |
| Возвращает | |
|---|---|
Объект Operation, который обновляет переменные в var_list. Счётчик iterations автоматически увеличится на 1. |
| Исключения | |
|---|---|
ValueError | Если некоторые из переменных не являются объектами Variable. |
set_weights
set_weights(
weights
)
Установить веса оптимизатора.
Веса оптимизатора — это его состояние (т.е., переменные). Эта функция принимает значения весов, связанные с этим оптимизатором, в виде списка массивов Numpy. Первое значение всегда — счётчик итераций оптимизатора, за которым следуют переменные состояния оптимизатора в порядке их создания. Переданные значения используются для установки нового состояния оптимизатора.
Например, оптимизатор RMSprop для этой простой модели принимает список из трёх значений — счётчик итераций, за которым следуют среднеквадратичные значения ядра и смещения единственного слоя Dense:
opt = tf.keras.optimizers.RMSprop()
m = tf.keras.models.Sequential([tf.keras.layers.Dense(10)])
m.compile(opt, loss='mse')
data = np.arange(100).reshape(5, 20)
labels = np.zeros(5)
print('Training'); results = m.fit(data, labels)
Training ...
new_weights = [np.array(10), np.ones([20, 10]), np.zeros([10])]
opt.set_weights(new_weights)
opt.iterations
<tf.Variable 'RMSprop/iter:0' shape=() dtype=int64, numpy=10>
| Аргументы | |
|---|---|
weights | Значения весов в виде списка массивов numpy. |
variables
variables()
Возвращает переменные этого оптимизатора, основываясь на порядке создания.
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/keras/optimizers/Adamax