Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.tpu.CrossShardOptimizer

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

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

tf.compat.v1.tpu.CrossShardOptimizer(
    opt,
    reduction=losses.Reduction.MEAN,
    name='CrossShardOptimizer',
    group_assignment=None
)
Аргументы
opt Существующий Optimizer для инкапсуляции.
reduction Применяемое сокращение к потерям фрагментов.
name Необязательный префикс имени для операций, созданных при применении градиентов. По умолчанию "CrossShardOptimizer".
group_assignment Необязательные 2d списки int32 с формой [num_groups, num_replicas_per_group], описывающие, как применять оптимизатор к подгруппам.
Исключения
ValueError Если сокращение не является допустимым сокращением для нескольких фрагментов.

Методы

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.
Возвращаемое значение
Операция, применяющая градиенты. Если 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() по умолчанию, градиенты масштабированной loss масштабированы на 1.0 / num_shards по сравнению с градиентами исходной loss. Этот коэффициент масштабирования важен, поскольку apply_gradients() суммирует градиенты по фрагментам, а не усредняет их. Однако, коэффициент масштабирования необходимо учитывать при ограничении нормы градиента или выполнении других обработок.

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

get_name

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

get_name()

get_slot

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

get_slot(
    *args, **kwargs
)

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

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

Аргументы
*args Аргументы для get_slot().
**kwargs Параметры для get_slot().
Возвращаемое значение
Переменная для слота, если он был создан, 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 Необязательная переменная, увеличивающаяся на единицу после обновления переменных.
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

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

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/versions/r2.9/api_docs/python/tf/compat/v1/tpu/CrossShardOptimizer

Spec-Zone.ru

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