Spec-Zone.ru › TensorFlow 2.9

tf.keras.dtensor.experimental.optimizers.Adadelta

Оптимизаторы, специфичные для DTensor.

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

tf.keras.dtensor.experimental.optimizers.Adadelta(
    learning_rate=0.001,
    rho=0.95,
    epsilon=1e-07,
    gradients_clip_option=None,
    ema_option=None,
    name='Adadelta',
    mesh=None
)

Основные изменения в этом классе заключаются в том, что вся логика инициализации переменных будет учитывать меш/макет.

Оптимизатор, реализующий алгоритм Adadelta.

Оптимизация Adadelta — это метод стохастического градиентного спуска, основанный на адаптивной скорости обучения по каждой размерности для решения двух проблем:

  • Постоянное уменьшение скорости обучения в течение обучения.
  • Необходимость в ручном выборе глобальной скорости обучения.

Adadelta — это более устойчивое расширение Adagrad, которое адаптирует скорости обучения, основываясь на скользящем окне обновлений градиента, а не на накоплении всех прошлых градиентов. Таким образом, Adadelta продолжает обучение даже после большого числа обновлений. В отличие от Adagrad, в исходной версии Adadelta не нужно задавать начальную скорость обучения. В этой версии начальная скорость обучения может быть задана, как и в большинстве других оптимизаторов Keras.

Аргументы
learning_rate Начальное значение скорости обучения: либо число с плавающей запятой, либо экземпляр tf.keras.optimizers.schedules.LearningRateSchedule. По умолчанию равно 0,001. Обратите внимание, что Adadelta склонен к более высоким начальным значениям скорости обучения по сравнению с другими оптимизаторами. Чтобы соответствовать точной форме в оригинальной статье, используйте 1,0.
rho Значение типа Tensor или число с плавающей запятой. Скорость затухания. По умолчанию равно 0,95.
epsilon Малое число с плавающей запятой, используемое для поддержания числовой устойчивости. По умолчанию равно 1e-7.
name Строка. Имя, используемое для весов аккумулятора импульса, созданных оптимизатором.
clipnorm Число с плавающей запятой. Если задано, градиент каждого веса индивидуально ограничен так, чтобы его норма не превышала это значение.
clipvalue Число с плавающей запятой. Если задано, градиент каждого веса ограничен значением, не превышающим это значение.
global_clipnorm Число с плавающей запятой. Если задано, градиент всех весов ограничен так, чтобы их глобальная норма не превышала это значение.
use_ema Булево значение, по умолчанию False. Если True, применяется экспоненциально скользящее среднее (EMA). EMA включает вычисление экспоненциально скользящего среднего весов модели (поскольку значения весов изменяются после каждой обучающей партии) и периодическое перезапись весов их скользящим средним.
ema_momentum Число с плавающей запятой, по умолчанию 0,99. Используется только если use_ema=True. Это импульс, используемый при вычислении EMA весов модели: new_average = ema_momentum * old_average + (1 - ema_momentum) * current_variable_value.
ema_overwrite_frequency Целое число или None, по умолчанию None. Используется только если use_ema=True. Каждые ema_overwrite_frequency шаги итераций мы перезаписываем переменную модели её скользящим средним. Если None, оптимизатор не перезаписывает переменные модели в середине обучения, и вам необходимо явно перезаписать переменные в конце обучения, вызвав optimizer.finalize_variable_values() (что обновляет переменные модели на месте). При использовании встроенной fit() петли обучения это происходит автоматически после последней эпохи, и вам ничего не нужно делать.
jit_compile Булево значение, по умолчанию True. Если True, оптимизатор будет использовать компиляцию XLA. jit_compile не может быть True при обучении с tf.distribute.experimental.ParameterServerStrategy. Кроме того, если не найдено устройство GPU, этот флаг будет проигнорирован.
**kwargs ключевые аргументы, используемые только для обеспечения обратной совместимости.

Ссылка:

  • Zeiler, 2012
Атрибуты
iterations Количество шагов обучения, пройденных этим optimizer.

По умолчанию, итерации будут увеличиваться на единицу каждый раз, когда вызывается apply_gradients().

learning_rate

Методы

add_variable

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

add_variable(
    shape, dtype=None, initializer='zeros', name=None
)

Создать переменную оптимизатора.

Аргументы
shape Список целых чисел, кортеж целых чисел или одномерный тензор типа int32. По умолчанию скаляр, если не указано иное.
dtype Тип данных переменной оптимизатора, который нужно создать. По умолчанию tf.keras.backend.floatx, если не указано иное.
initializer строка или вызываемый объект. Экземпляр инициализатора.
name Имя переменной оптимизатора, которое нужно создать.
Возвращаемое значение
Переменная оптимизатора в формате tf.Variable.

add_variable_from_reference

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

add_variable_from_reference(
    model_variable, variable_name, initial_value=None
)

Создать переменную оптимизатора из переменной модели.

Создает переменную оптимизатора на основе информации о переменной модели. Например, в оптимизаторе SGD с моментом для каждой переменной модели создается соответствующая переменная момента того же размера и типа.

Аргументы
model_variable Соответствующая переменная модели для создаваемой переменной оптимизатора.
variable_name Префикс имени создаваемой переменной оптимизатора. Имя создаваемой переменной будет следовать шаблону {variable_name}/{model_variable.name}, например momemtum/dense_1.
initial_value Начальное значение переменной оптимизатора, если None, значение будет по умолчанию 0.
Возвращаемое значение
Переменная оптимизатора.

apply_gradients

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

apply_gradients(
    grads_and_vars
)

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

Аргументы
grads_and_vars Список пар (градиент, переменная).
Возвращаемое значение
None
Исключения
TypeError Если grads_and_vars имеет неправильный формат.

build

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

build(
    var_list
)

Инициализировать переменные оптимизатора, такие как переменные импульса.

Эта функция должна быть реализована подклассами оптимизаторов, и подклассы оптимизаторов должны вызывать super().build(var_list).

Аргументы
var_list Список переменных модели, на которых нужно построить оптимизаторы. Например, оптимизатор SGD с моментом будет хранить одну переменную импульса, соответствующую каждой переменной модели.

compute_gradients

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

compute_gradients(
    loss, var_list, tape=None
)

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

Аргументы
loss Tensor или вызываемый объект. Если вызываемый объект, loss не должен принимать аргументы и возвращать значение, которое нужно минимизировать.
var_list список или кортеж объектов Variable для обновления, чтобы минимизировать loss.
tape (Необязательно) tf.GradientTape. Если loss предоставлен как Tensor, лента, которая вычисляла loss должна быть предоставлена.
Возвращаемое значение
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None.

finalize_variable_values

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

finalize_variable_values(
    var_list
)

Установить конечное значение переменных обучения модели.

Иногда перед завершением обновлений переменных есть дополнительные шаги, такие как перезапись переменных модели их средним значением.

Аргументы
var_list список переменных модели.

from_config

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

@classmethod
from_config(
    config
)

Создаёт оптимизатор из его конфигурации.

Этот метод является обратным к get_config, способным инициализировать тот же оптимизатор из словаря конфигурации.

Аргументы
config Словарь Python, обычно результат работы get_config.
Возвращаемое значение
Экземпляр оптимизатора.

get_config

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

get_config()

Возвращает конфигурацию оптимизатора.

Конфигурация оптимизатора — это словарь Python (сериализуемый), содержащий конфигурацию оптимизатора. Тот же оптимизатор можно повторно инициализировать позже (без сохранения состояния) из этой конфигурации.

Подклассы оптимизатора должны переопределять этот метод для включения других гиперпараметров.

Возвращаемое значение
Словарь Python.

minimize

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

minimize(
    loss, var_list, tape=None
)

Минимизировать loss путем обновления var_list.

Этот метод просто вычисляет градиент с помощью tf.GradientTape и вызывает apply_gradients(). Если вы хотите обработать градиент перед применением, вызовите tf.GradientTape и apply_gradients() явно вместо использования этой функции.

Аргументы
loss Tensor или вызываемый объект. Если вызываемый объект, loss не должен принимать аргументов и возвращать значение для минимизации.
var_list список или кортеж объектов Variable для обновления, чтобы минимизировать loss.
tape (Необязательно) tf.GradientTape.
Возвращаемое значение
None

update_step

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

update_step(
    grad, variable
)

Шаг обновления, учитывая градиент и связанную переменную модели.

© 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/keras/dtensor/experimental/optimizers/Adadelta

Spec-Zone.ru

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