Spec-Zone.ru › TensorFlow 2.4

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, beta=None
)

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

Сноски:

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

Аргументы
learning_rate Вещественное значение или константное вещественное 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. В частности, в отсутствие регуляризации L1 она эквивалентна следующему правилу обновления: w_{t+1} = w_t - lr_t / (beta + 2L2lr_t) * g_t - 2L2_shrinkagelr_t / (beta + 2L2lr_t) * w_t где lr_t - скорость обучения в момент t. При разряженном вводе сжатие будет происходить только для активных весов.
beta Вещественное значение; соответствует параметру beta в статье.
Исключения
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 Тензор, содержащий значение для минимизации, или вызываемая функция без аргументов, которая возвращает значение для минимизации. При включенном режиме выполнения 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 содержащий градиент, вычисленный для loss.
Возвращаемое значение
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None.
Исключения
TypeError Если var_list содержит что-либо кроме Variable объектов.
ValueError Если некоторые аргументы недопустимы.
RuntimeError Если вызвана с включенным режимом Eager выполнения и loss не является вызываемой функцией.

Совместимость с Eager

При включенном режиме Eager выполнения 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()

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

См. 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.

Совместимость с Eager Execution

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

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.4/api_docs/python/tf/compat/v1/train/FtrlOptimizer

Spec-Zone.ru

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