Spec-Zone.ru › TensorFlow 2.3

tf.compat.v1.train.FtrlOptimizer

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

Унаследован от: Optimizer

tf.compat.v1.train.FtrlOptimizer(
    learning_rate, learning_rate_power=-0.5, initial_accumulator_value=0.1,
    l1_regularization_strength=0.0, l2_regularization_strength=0.0,
    use_locking=False, name='Ftrl', accum_name=None, linear_name=None,
    l2_shrinkage_regularization_strength=0.0
)

Эта версия поддерживает как онлайн L2 (McMahan et al., 2013), так и сжатие L2, которое представляет собой добавление штрафа L2 к функции потерь.

Ссылки:

Предсказание кликов по рекламе: McMahan et al., 2013 (pdf)

Аргументы
learning_rate Вещественное значение или константа float Tensor.
learning_rate_power Вещественное значение, должно быть меньше или равно нулю. Управляет тем, как скорость обучения уменьшается во время обучения. Используйте ноль для фиксированной скорости обучения. См. раздел 3.1 в (McMahan et al., 2013).
initial_accumulator_value Начальное значение для аккумуляторов. Разрешены только нулевые или положительные значения.
l1_regularization_strength Вещественное значение, должно быть больше или равно нулю.
l2_regularization_strength Вещественное значение, должно быть больше или равно нулю.
use_locking Если True использовать блокировки для операций обновления.
name Необязательное префиксное имя для операций, созданных при применении градиентов. По умолчанию "Ftrl".
accum_name Суффикс для переменной, которая хранит квадратный накопитель градиента. Если отсутствует, по умолчанию используется имя.
linear_name Суффикс для переменной, которая хранит линейный накопитель градиента. Если отсутствует, по умолчанию используется имя + "1".
l2_shrinkage_regularization_strength Вещественное значение, должно быть больше или равно нулю. Это отличается от L2 выше, так как L2 выше является штрафом стабилизации, в то время как это сжатие L2 является штрафом за величину. Формулировка FTRL может быть записана как: w{t+1} = argminw(\hat{g}{1:t}w + L1||w||_1 + L2||w||_2^2), где \hat{g} = g + (2L2_shrinkagew), и g является градиентом функции потерь w.r.t. весов w. В частности, в отсутствие регуляризации L1 это эквивалентно следующему правилу обновления: w_{t+1} = w_t - lr_t / (1 + 2L2lr_t) * g_t - 2L2_shrinkagelr_t / (1 + 2L2lr_t) * w_t где lr_t - скорость обучения в момент t. Когда вход является разреженным, сжатие произойдет только для активных весов.
Исключения
ValueError Если один из аргументов недействителен.

Методы

apply_gradients

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

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

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

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

Аргументы
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.

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

Аргументы
loss Tensor, содержащий значение для минимизации, или вызываемый объект без аргументов, возвращающий значение для минимизации. При включенной жадной вычислении он должен быть вызываемым объектом.
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, содержащий градиент, вычисленный для loss.
Возвращаемое значение
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None.
Исключения
TypeError Если var_list содержит что-либо кроме Variable объектов.
ValueError Если некоторые аргументы недействительны.
RuntimeError Если вызывается с включенным жадным выполнением и loss не является вызываемым объектом.

Совместимость с жадным выполнением

При включенном жадном выполнении gate_gradients, aggregation_method, и colocate_gradients_with_ops игнорируются.

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 A 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 Необязательно. A 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

© 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/compat/v1/train/FtrlOptimizer

Spec-Zone.ru

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