Spec-Zone.ru › TensorFlow 1.15

tf.contrib.opt.MomentumWOptimizer

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

Наследуется от: DecoupledWeightDecayExtension, MomentumOptimizer

tf.contrib.opt.MomentumWOptimizer(
    weight_decay, learning_rate, momentum, use_locking=False, name='MomentumW',
    use_nesterov=False
)

Это реализация оптимизатора SGDW, описанного в статье «Fixing Weight Decay Regularization in Adam» Лощилова и Хуттера (https://arxiv.org/abs/1711.05101) ([pdf])(https://arxiv.org/pdf/1711.05101.pdf). Он вычисляет шаг обновления для train.MomentumOptimizer и дополнительно уменьшает переменную. Обратите внимание, что это отличается от добавления L2 регуляризации переменных к функции потерь. Разделение weight decay от других гиперпараметров (в частности, от скорости обучения) упрощает поиск гиперпараметров.

Для получения дополнительной информации см. документацию по оптимизатору импульса.

Обратите внимание, что этот оптимизатор также может быть создан как

extend_with_weight_decay(tf.compat.v1.train.MomentumOptimizer,
                         weight_decay=weight_decay)
Аргументы
weight_decay Значение типа Tensor или число с плавающей точкой. Величина weight decay.
learning_rate Значение типа Tensor или число с плавающей точкой. Скорость обучения.
momentum Значение типа Tensor или число с плавающей точкой. Импульс.
use_locking Если True использовать блокировки для операций обновления.
name Необязательное префиксное имя для операций, созданных при применении градиентов. По умолчанию «Momentum».
use_nesterov Если True использовать импульс Нестерова. См. Sutskever et al., 2013. Эта реализация всегда вычисляет градиенты в значениях переменной(ых), переданных оптимизатору. Использование импульса Нестерова позволяет переменным отслеживать значения, называемые theta_t + mu*v_t в статье. @compatibility(eager) При включенном режиме выполнения eager, learning_rate, weight_decay и momentum могут быть функциями, которые не принимают аргументы и возвращают фактическое используемое значение. Это может быть полезно для изменения этих значений при различных вызовах функций оптимизатора. @end_compatibility

Методы

apply_gradients

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

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

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

Эта функция эквивалентна Optimizer.apply_gradients, за исключением того, что позволяет указать переменные, которые должны быть уменьшены, используя decay_var_list. Если decay_var_list равно None, все переменные в var_list уменьшаются.

Для получения дополнительной информации см. документацию по Optimizer.apply_gradients.

Аргументы
grads_and_vars Список пар (градиент, переменная), как возвращается compute_gradients().
global_step Необязательное значение Variable, увеличиваемое на единицу после обновления переменных.
name Необязательное имя для возвращаемой операции. По умолчанию совпадает с именем, переданным конструктору Optimizer.
decay_var_list Необязательный список переменных для уменьшения.
Возвращаемое значение
Операция, применяющая заданные градиенты. Если global_step не равно None, эта операция также увеличивает global_step.

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()

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

См. get_slot().

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

minimize

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

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

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

Эта функция эквивалентна Optimizer.minimize, за исключением того, что позволяет указать переменные, которые должны быть уменьшены, используя decay_var_list. Если decay_var_list равно None, все переменные в var_list уменьшаются.

Для получения дополнительной информации см. документацию по Optimizer.minimize.

Аргументы
loss Тензор, содержащий значение для минимизации.
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.
decay_var_list Необязательный список переменных для уменьшения.
Возвращаемое значение
Операция, обновляющая переменные в var_list. Если global_step не было None, эта операция также увеличивает global_step.

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/r1.15/api_docs/python/tf/contrib/opt/MomentumWOptimizer

Spec-Zone.ru

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