Spec-Zone.ru › TensorFlow 2.3

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 Необязательные двумерные списки int32 с формой [число_групп, число_реплик_в_группе], описывающие, как применять оптимизатор к подгруппам.
Исключения
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 Необязательное имя возвращаемой операции. По умолчанию совпадает с именем, переданным конструктору оптимизатора.
Возвращаемое значение
Операция, применяющая градиенты. Если 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_context или 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 execution, loss должна быть Python-функцией без аргументов, которая вычисляет значение, которое нужно минимизировать. Минимизация (и вычисление градиентов) производится относительно элементов var_list если оно не None, иначе — относительно любых обучаемых переменных, созданных во время выполнения функции loss. gate_gradients, aggregation_method, colocate_gradients_with_ops и grad_loss игнорируются при включённом режиме eager execution.

variables

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

variables()

Передача переменных из базового оптимизатора.

Переменные класса

  • 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.3/api_docs/python/tf/compat/v1/tpu/CrossShardOptimizer

Spec-Zone.ru

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