tf.compat.v1.SparseConditionalAccumulator
Условный аккумулятор для агрегирования разреженных градиентов.
Наследует от: ConditionalAccumulatorBase
tf.compat.v1.SparseConditionalAccumulator(
dtype,
shape=None,
shared_name=None,
name='sparse_conditional_accumulator',
reduction_type='MEAN'
)
Разреженные градиенты представлены с помощью IndexedSlices.
Актуальные градиенты (то есть шаг времени, на котором был вычислен градиент, равен шагу времени аккумулятора) добавляются в аккумулятор.
Извлечение среднего градиента блокируется до тех пор, пока не будет накоплено необходимое количество градиентов.
| Аргументы | |
|---|---|
dtype | Тип данных накапливаемых градиентов. |
shape | Форма накапливаемых градиентов. |
shared_name | Необязательный параметр. Если указано непустое значение, этот аккумулятор будет доступен для совместного использования в нескольких сеансах под заданным именем. |
name | Необязательное имя аккумулятора. |
reduction_type | Тип редукции, используемый при извлечении градиента. |
| Атрибуты | |
|---|---|
accumulator_ref | Ссылка на базовый аккумулятор. |
dtype | Тип данных градиентов, накапливаемых этим аккумулятором. |
name | Имя базового аккумулятора. |
Методы
apply_grad
apply_grad(
grad_indices, grad_values, grad_shape=None, local_step=0, name=None
)
Пытается применить разреженный градиент к аккумулятору.
Попытка незаметно отбрасывается, если градиент устарел, то есть local_step меньше глобального шага времени аккумулятора.
Разреженный градиент представлен индексами, значениями и, возможно, пустой формой или значением None. Индексы должны быть вектором, задающим расположение ненулевых элементов тензора. Значения — это ненулевые срезы градиента; их первое измерение должно совпадать с измерением индексов, то есть количество ненулевых элементов (nnz), задаваемое индексами и значениями, должно быть согласованным. Если форма не пуста и не равна None, она должна соответствовать форме аккумулятора (если она также задана).
| Пример | |
|---|---|
| Тензор [[0, 0], [0, 1], [2, 3]] можно представить следующим образом: индексы: [1,2], значения: [[0,1],[2,3]], форма: [3, 2] |
| Аргументы | |
|---|---|
grad_indices | Индексы разреженного градиента, который нужно применить. |
grad_values | Значения разреженного градиента, который нужно применить. |
grad_shape | Форма разреженного градиента, который нужно применить. |
local_step | Шаг времени, на котором был вычислен градиент. |
name | Необязательное имя операции. |
| Возвращает | |
|---|---|
| Операцию, которая (условно) применяет градиент к аккумулятору. |
| Вызывает исключения | |
|---|---|
InvalidArgumentError | Если grad имеет неправильную форму |
apply_indexed_slices_grad
apply_indexed_slices_grad(
grad, local_step=0, name=None
)
Пытается применить градиент к аккумулятору.
Попытка незаметно отбрасывается, если градиент устарел, то есть local_step меньше глобального шага времени аккумулятора.
| Аргументы | |
|---|---|
grad | Градиент IndexedSlices, который нужно применить. |
local_step | Шаг времени, на котором был вычислен градиент. |
name | Необязательное имя операции. |
| Возвращает | |
|---|---|
| Операцию, которая (условно) применяет градиент к аккумулятору. |
| Вызывает исключения | |
|---|---|
InvalidArgumentError | Если grad имеет неправильную форму |
num_accumulated
num_accumulated(
name=None
)
Количество градиентов, уже агрегированных в аккумуляторе.
| Аргументы | |
|---|---|
name | Необязательное имя операции. |
| Возвращает | |
|---|---|
| Количество градиентов, уже накопленных в аккумуляторе. |
set_global_step
set_global_step(
new_global_step, name=None
)
Задает глобальный шаг времени аккумулятора.
Операция записывает предупреждение, если предпринимается попытка задать шаг времени, меньший текущего шага времени аккумулятора.
| Аргументы | |
|---|---|
new_global_step | Новое значение шага времени. Может быть переменной или константой. |
name | Необязательное имя операции. |
| Возвращает | |
|---|---|
| Операцию, задающую шаг времени аккумулятора. |
take_grad
take_grad(
num_required, name=None
)
Пытается извлечь средний градиент из аккумулятора.
Операция блокируется до тех пор, пока в аккумулятор не будет успешно добавлено достаточное количество градиентов.
При успешном выполнении также запускаются следующие действия:
- Счетчик накопленных градиентов сбрасывается до 0.
- Агрегированный градиент сбрасывается до нулевого тензора.
- Внутренний шаг времени аккумулятора увеличивается на 1.
| Аргументы | |
|---|---|
num_required | Количество градиентов, которые должны быть агрегированы |
name | Необязательное имя операции |
| Возвращает | |
|---|---|
| Кортеж индексов, значений и формы, представляющий средний градиент. |
| Вызывает исключения | |
|---|---|
InvalidArgumentError | Если num_required < 1 |
take_indexed_slices_grad
take_indexed_slices_grad(
num_required, name=None
)
Пытается извлечь средний градиент из аккумулятора.
Операция блокируется до тех пор, пока в аккумулятор не будет успешно добавлено достаточное количество градиентов.
При успешном выполнении также запускаются следующие действия:
- Счетчик накопленных градиентов сбрасывается до 0.
- Агрегированный градиент сбрасывается до нулевого тензора.
- Внутренний шаг времени аккумулятора увеличивается на 1.
| Аргументы | |
|---|---|
num_required | Количество градиентов, которые должны быть агрегированы |
name | Необязательное имя операции |
| Возвращает | |
|---|---|
IndexedSlices, содержащий значение среднего градиента. |
| Вызывает исключения | |
|---|---|
InvalidArgumentError | Если num_required < 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/SparseConditionalAccumulator