Spec-Zone.ru › TensorFlow 1.15

tf.contrib.opt.LARSOptimizer

Масштабирование шага обучения адаптивно по слоям для обучения на больших батчах.

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

tf.contrib.opt.LARSOptimizer(
    learning_rate, momentum=0.9, weight_decay=0.0001, eeta=0.001, epsilon=0.0,
    name='LARSOptimizer', skip_list=None, use_nesterov=False
)

Представлен в статье «Large Batch Training of Convolutional Networks» авторов Y. You, I. Gitman и B. Ginsburg. (https://arxiv.org/abs/1708.03888)

Реализует схему адаптивного изменения скорости обучения LARS, представленную в статье выше. Этот оптимизатор полезен при увеличении размера батча до 32K без значительной потери производительности. Рекомендуется использовать оптимизатор в сочетании с:

- Gradual learning rate warm-up
- Linear learning rate scaling
- Poly rule learning rate decay

Обратите внимание, что масштабирование LARS в настоящее время включено только для плотных тензоров. Для разреженных тензоров используется оптимизатор с импульсом по умолчанию.

Аргументы
learning_rate Значение типа Tensor или с плавающей точкой. Базовая скорость обучения.
momentum Значение с плавающей точкой. Гиперпараметр импульса.
weight_decay Значение с плавающей точкой. Гиперпараметр распада весов.
eeta Коэффициент LARS, используемый в статье. По умолчанию установлен коэффициент LARS из статьи. (eeta / weight_decay) определяет наибольший коэффициент масштабирования в LARS.
epsilon Необязательный параметр epsilon, который необходимо установить в моделях с очень маленькими градиентами. По умолчанию равен 0,0.
name Необязательное префиксное имя для переменных и операций, созданных LARSOptimizer.
skip_list Список строк для отключения масштабирования переменных LARS. Если любая из строк в skip_list является подмножеством var.name, переменная 'var' пропускается при масштабировании LARS. Для типичной модели классификации с пакетной нормализацией skip_list равен ['batch_normalization', 'bias']
use_nesterov При значении True, будет включён импульс Нестерова.
Исключения
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 execution она должна быть вызываемой функцией.
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 execution, а loss не является вызываемой функцией.

Совместимость с eager execution

При включённом режиме eager execution, gate_gradients, aggregation_method, и colocate_gradients_with_ops игнорируются.

compute_lr

Просмотр исходного кода

compute_lr(
    grad, var
)

get_name

Просмотр исходного кода

get_name()

get_slot

Просмотр исходного кода

get_slot(
    var, name
)

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

Некоторые подклассы оптимизаторов используют дополнительные переменные. Например, 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 Значение, которое нужно минимизировать.
global_step Необязательный аргумент, который увеличивает значение на единицу после обновления переменных.
var_list Необязательный список или кортеж объектов, которые нужно обновить, чтобы минимизировать loss. По умолчанию используется список переменных, собранных в графе под ключом GraphKeys.TRAINABLE_VARIABLES.
gate_gradients Способ управления вычислением градиентов. Может быть GATE_NONE, GATE_OP, или GATE_GRAPH.
aggregation_method Указывает метод объединения градиентных слагаемых. Допустимые значения определены в классе AggregationMethod.
colocate_gradients_with_ops Если True, попытаться разместить градиенты вместе с соответствующей операцией.
name Необязательное имя возвращаемой операции.
grad_loss Необязательно. Объект, хранящий вычисленный градиент для 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/r1.15/api_docs/python/tf/contrib/opt/LARSOptimizer

Spec-Zone.ru

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