Spec-Zone.ru › TensorFlow 2.3

tf.keras.optimizers.Adamax

Просмотреть исходный код на GitHub

Оптимизатор, реализующий алгоритм Adamax.

Наследуется от: Optimizer

Просмотр псевдонимов

Основные псевдонимы

tf.optimizers.Adamax

Псевдонимы совместимости для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.keras.optimizers.Adamax

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" (число с плавающей запятой) ограничивает градиенты по значению.

Ссылка:

  • Kingma et al., 2014
Аргументы
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API