Spec-Zone.ru › TensorFlow

tf.compat.v1.tpu.CrossShardOptimizer

Оптимизатор, усредняющий градиенты между сегментами TPU.

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

tf.compat.v1.tpu.CrossShardOptimizer(
    opt,
    reduction=losses.Reduction.MEAN,
    name='CrossShardOptimizer',
    group_assignment=None
)

Используется в блокнотах

Используется в руководстве
  • Переход с TPU embedding_columns на слой TPUEmbedding
Аргументы
opt Существующий Optimizer для обёртывания.
reduction Операция редукции, применяемая к потерям сегментов.
name Необязательный префикс имени для операций, создаваемых при применении градиентов. По умолчанию — "CrossShardOptimizer".
group_assignment Необязательные списки int32 размерности 2 с формой [num_groups, num_replicas_per_group], описывающие, как применять оптимизатор к подгруппам.
Исключения
ValueError Если reduction не является допустимой межсегментной операцией редукции.

Методы

apply_gradients

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

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

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

Вызывает tpu_ops.cross_replica_sum() для суммирования вкладов градиентов между репликами, а затем применяет исходный оптимизатор.

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

compute_gradients

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

compute_gradients(
    loss, var_list=None, **kwargs
)

Вычисляет градиенты функции "loss" для переменных из "var_list".

Этот метод просто оборачивает compute_gradients() исходного оптимизатора. Градиенты будут агрегированы в apply_gradients(), чтобы пользователь мог при необходимости изменять их, например выполнять отсечение по глобальной норме для каждой реплики. Глобальная норма агрегированных градиентов может быть нежелательной, поскольку большие градиенты одной реплики могут негативно повлиять на градиенты других реплик.

Если CrossShardOptimizer создан с параметром reduction == losses.Reduction.MEAN (значение по умолчанию), эта функция масштабирует loss на 1.0 / num_shards перед вычислением градиентов. Если предположить, что оптимизатор использует стандартную реализацию compute_gradients(), градиенты масштабированной функции потерь будут масштабированы на 1.0 / num_shards относительно градиентов исходной функции потерь. Этот коэффициент масштабирования важен, поскольку apply_gradients() суммирует градиенты между сегментами, а не усредняет их. Однако этот коэффициент необходимо учитывать при отсечении нормы градиентов или выполнении другой постобработки.

Аргументы
loss Тензор, содержащий минимизируемое значение.
var_list Необязательный список или кортеж объектов tf.Variable, которые необходимо обновить для минимизации loss. По умолчанию используется список переменных, собранных в графе под ключом GraphKey.TRAINABLE_VARIABLES.
**kwargs Именованные аргументы для compute_gradients().
Возвращает
Список пар (градиент, переменная).
Исключения
ValueError Если вызов выполняется вне контекста tpu_shard_context или group_assignment недопустим.

get_name

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

get_name()

get_slot

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

get_slot(
    *args, **kwargs
)

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

Этот метод просто оборачивает get_slot() фактического оптимизатора.

Аргументы
*args Аргументы для get_slot().
**kwargs Именованные аргументы для get_slot().
Возвращает
Variable для слота, если он был создан, в противном случае — None.

get_slot_names

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

get_slot_names(
    *args, **kwargs
)

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

Этот метод просто оборачивает get_slot_names() фактического оптимизатора.

Аргументы
*args Аргументы для get_slot().
**kwargs Именованные аргументы для 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.

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

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

variables

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

variables()

Перенаправление к переменным базового оптимизатора.

Переменные класса
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/api_docs/python/tf/compat/v1/tpu/CrossShardOptimizer

Spec-Zone.ru

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