Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.train.AdagradOptimizer

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

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

tf.compat.v1.train.AdagradOptimizer(
    learning_rate,
    initial_accumulator_value=0.1,
    use_locking=False,
    name='Adagrad'
)

Миграция на TF2

Внимание: Этот API был разработан для TensorFlow v1. Продолжайте чтение, чтобы узнать, как мигрировать с этого API на эквивалент в родном TensorFlow v2. Обратитесь к руководству по миграции TensorFlow v1 в TensorFlow v2 для получения инструкций по миграции остальной части вашего кода.

tf.compat.v1.train.AdagradOptimizer совместим с режимом eager и tf.function. Когда включено выполнение eager, learning_rate, initial_accumulator_value, и epsilon могут быть вызываемыми объектами, принимающими на вход пустой список аргументов и возвращающими фактическое значение для использования. Это может быть полезно для изменения этих значений при различных вызовах функций оптимизатора.

Для перехода на родной стиль TF2 используйте tf.keras.optimizers.Adagrad вместо этого. Обратите внимание, что из-за различий в реализации tf.keras.optimizers.Adagrad и tf.compat.v1.train.AdagradOptimizer могут быть незначительные различия в вычислениях с плавающей точкой, даже если формула, используемая для обновления переменных, остается неизменной.

Структурное соответствие с родным TF2

До:

optimizer = tf.compat.v1.train.AdagradOptimizer(
  learning_rate=learning_rate,
  initial_accumulator_value=initial_accumulator_value)

После:

optimizer = tf.keras.optimizers.Adagrad(
  learning_rate=learning_rate,
  initial_accumulator_value=initial_accumulator_value,
  epsilon=1e-07)

Как сопоставить аргументы

Имя аргумента TF1 Имя аргумента TF2 Примечание
learning_rate learning_rate Будьте осторожны при установлении значения тензора learning_rate, вычисляемого из глобального шага. В TF1 это обычно подразумевало динамическую скорость обучения и пересчет на каждом шаге. В TF2 (eager + функция) это будет обрабатываться как скалярное значение, которое вычисляется только один раз вместо символического места, которое вычисляется каждый раз.
initial_accumulator_value initial_accumulator_value Аргумент может принимать значение ноль в TF2, что не допускается в TF1.|
- epsilon epsilon стала настраиваемой в TF2. Значение по умолчанию изменено с 1e-8 на 1e-7
use_locking - Не применимо в TF2.

Пример использования до и после

До:

x = tf.Variable([1,2,3], dtype=tf.float32)
grad = tf.constant([0.1, 0.2, 0.3])
optimizer = tf.compat.v1.train.AdagradOptimizer(learning_rate=0.001)
optimizer.apply_gradients(zip([grad], [x]))

После:

x = tf.Variable([1,2,3], dtype=tf.float32)
grad = tf.constant([0.1, 0.2, 0.3])
optimizer = tf.keras.optimizers.Adagrad(learning_rate=0.001)
optimizer.apply_gradients(zip([grad], [x]))

Описание

Ссылки:

Adaptive Subgradient Methods for Online Learning and Stochastic Optimization :Duchi et al., 2011 (pdf)

Аргументы
learning_rate Значение Tensor или число с плавающей точкой. Скорость обучения.
initial_accumulator_value Число с плавающей точкой. Начальное значение для аккумуляторов, должно быть положительным.
use_locking Если True использовать блокировки для операций обновления.
name Необязательный префикс имени для операций, создаваемых при применении градиентов. По умолчанию "Adagrad".
Возможные ошибки
ValueError Если initial_accumulator_value является недопустимым.

Методы

apply_gradients

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

apply_gradients(
    grads_and_vars, global_step=None, name=None
)

Применение градиентов к переменным.

Это вторая часть minimize(). Возвращает Operation, который применяет градиенты.

@compatibility(TF2)

Как сопоставить аргументы

Имя аргумента TF1 Имя аргумента TF2 Примечание
grads_and_vars grads_and_vars -
global_step Не поддерживается. Используйте optimizer.iterations
name name. -
Аргументы
grads_and_vars Список пар (градиент, переменная), возвращаемых compute_gradients().
global_step Необязательный Variable для увеличения на единицу после обновления переменных.
name Необязательное имя возвращаемой операции. По умолчанию имя, переданное конструктору Optimizer.
Возвращаемое значение
Operation для применения указанных градиентов. Если global_step не равно None, эта операция также увеличивает global_step.
Возможные ошибки
TypeError Если grads_and_vars имеет неправильный формат.
ValueError Если ни у одной из переменных нет градиента.
RuntimeError Если следует использовать _distributed_apply() вместо этого.

compute_gradients

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

compute_gradients(
    loss,
    var_list=None,
    gate_gradients=GATE_OP,
    aggregation_method=None,
    colocate_gradients_with_ops=False,
    grad_loss=None
)

Вычисление градиентов loss для переменных в var_list.

Миграция на TF2

Внимание: Этот API был разработан для TensorFlow v1. Продолжайте чтение, чтобы узнать, как мигрировать с этого API на эквивалент в родном TensorFlow v2. Обратитесь к руководству по миграции TensorFlow v1 в TensorFlow v2 для получения инструкций по миграции остальной части вашего кода.

tf.keras.optimizers.Optimizer в TF2 не предоставляет метод compute_gradients, и вам следует использовать tf.GradientTape для получения градиентов:

@tf.function
def train step(inputs):
  batch_data, labels = inputs
  with tf.GradientTape() as tape:
    predictions = model(batch_data, training=True)
    loss = tf.keras.losses.CategoricalCrossentropy(
        reduction=tf.keras.losses.Reduction.NONE)(labels, predictions)
  gradients = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(gradients, model.trainable_variables))

Аргументы: loss: Тензор, содержащий значение для минимизации, или вызываемый объект, принимающий на вход пустой список аргументов и возвращающий значение для минимизации. При включенном режиме eager он должен быть вызываемым объектом. var_list: Необязательный список или кортеж tf.Variable для обновления, чтобы минимизировать loss. По умолчанию — список переменных, собранных в графике по ключу GraphKeys.TRAINABLE_VARIABLES. gate_gradients: Способ управления вычислением градиентов. Может быть GATE_NONE, GATE_OP, или GATE_GRAPH. aggregation_method: Указывает метод объединения членов градиента. Допустимые значения определены в классе AggregationMethod. colocate_gradients_with_ops: Если True, попробуйте разместить градиенты вместе с соответствующей операцией. grad_loss: Необязательно. Тензор, содержащий градиент, вычисленный для Tensor.

Возвращаемое значение: Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None.

Возможные ошибки: TypeError: Если var_list содержит что-либо кроме объектов Variable. ValueError: Если некоторые аргументы недопустимы. RuntimeError: Если вызов сделан при включенном eager выполнении, и loss не является вызываемым объектом.

@compatibility(eager) При включенном eager выполнении gate_gradients, aggregation_method, и colocate_gradients_with_ops игнорируются.

Описание

Это первая часть minimize(). Возвращает список пар (градиент, переменная), где «градиент» — это градиент для «переменной». Обратите внимание, что «градиент» может быть Tensor, IndexedSlices, или None в случае отсутствия градиента для данной переменной.

get_name

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

get_name()

get_slot

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

get_slot(
    var, name
)

Возвращает слот с именем name, созданный для var оптимизатором.

Некоторые подклассы Optimizer используют дополнительные переменные. Например, Momentum и Adagrad используют переменные для накопления обновлений. Этот метод предоставляет доступ к этим Variable объектам, если они по какой-то причине вам нужны.

Используйте get_slot_names() для получения списка имен слотов, созданных Optimizer.

Аргументы
var Переменная, переданная в minimize() или apply_gradients().
name Строка.
Возвращаемое значение
Variable для слота, если он был создан, None в противном случае.

get_slot_names

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

get_slot_names()

Возвращает список имён слотов, созданных Optimizer.

См. get_slot().

Возвращает
Список строк.

minimize

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

minimize(
    loss,
    global_step=None,
    var_list=None,
    gate_gradients=GATE_OP,
    aggregation_method=None,
    colocate_gradients_with_ops=False,
    name=None,
    grad_loss=None
)

Добавляет операции для минимизации loss путём обновления var_list.

Этот метод просто комбинирует вызовы compute_gradients() и apply_gradients(). Если вы хотите обработать градиент перед его применением, вызовите compute_gradients() и apply_gradients() явно вместо использования этой функции.

Аргументы
loss Tensor, содержащий значение для минимизации.
global_step Необязательный Variable, который увеличивается на единицу после обновления переменных.
var_list Необязательный список или кортеж объектов Variable для обновления, чтобы минимизировать loss. По умолчанию используется список переменных, собранных в графе под ключом GraphKeys.TRAINABLE_VARIABLES.
gate_gradients Способ управления вычислением градиентов. Может быть GATE_NONE, GATE_OP, или GATE_GRAPH.
aggregation_method Указывает метод комбинирования терминов градиента. Допустимые значения определены в классе AggregationMethod.
colocate_gradients_with_ops Если True, попытаться разместить градиенты вместе с соответствующей операцией.
name Необязательное имя возвращаемой операции.
grad_loss Необязательно. Tensor, содержащий градиент, вычисленный для loss
Возвращает
Операция, обновляющая переменные в var_list. Если global_step не был None, эта операция также увеличивает global_step
Исключения
ValueError Если некоторые переменные не являются объектами Variable

совместимость с ускорением вычислений

При включенном режиме ускоренного выполнения loss должна быть функцией Python, которая не принимает аргументов и вычисляет значение, которое нужно минимизировать. Минимизация (и вычисление градиента) выполняется относительно элементов var_list если оно не равно None, иначе относительно любых обучаемых переменных, созданных во время выполнения функции loss gate_gradients, aggregation_method, colocate_gradients_with_ops и grad_loss игнорируются при включенном режиме ускоренного выполнения.

variables

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

variables()

Список переменных, которые кодируют текущее состояние Optimizer.

Включает переменные слотов и дополнительные глобальные переменные, созданные оптимизатором в текущем графике по умолчанию.

Возвращает
Список переменных.
Переменные класса
GATE_GRAPH 2
GATE_NONE 0
GATE_OP 1

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/compat/v1/train/AdagradOptimizer

Spec-Zone.ru

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