Spec-Zone.ru › TensorFlow

tf.keras.optimizers.SGD

Оптимизатор градиентного спуска (с моментом).

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

tf.keras.optimizers.SGD(
    learning_rate=0.01,
    momentum=0.0,
    nesterov=False,
    weight_decay=None,
    clipnorm=None,
    clipvalue=None,
    global_clipnorm=None,
    use_ema=False,
    ema_momentum=0.99,
    ema_overwrite_frequency=None,
    loss_scale_factor=None,
    gradient_accumulation_steps=None,
    name='SGD',
    **kwargs
)

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

Используется в руководстве Используется в учебниках
  • Основные циклы обучения
  • Основы TensorFlow
  • Распределенное обучение с TensorFlow
  • Использование GPU
  • Миграция механизма устойчивости к ошибкам
  • Настраиваемое обучение: пошаговый пример
  • Многоузловое обучение с Keras
  • TFF для исследования федерального обучения: сжатие модели и обновления
  • Федеральное обучение для классификации изображений
  • Федеральное восстановление для факторизации матриц

Правило обновления параметра w с градиентом g, когда momentum равен 0:

w = w - learning_rate * g

Правило обновления, когда momentum больше 0:

velocity = momentum * velocity - learning_rate * g
w = w + velocity

Когда nesterov=True, это правило становится:

velocity = momentum * velocity - learning_rate * g
w = w + momentum * velocity - learning_rate * g
Аргументы
learning_rate Число с плавающей точкой, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемая функция без аргументов, возвращающая фактическое значение для использования. Скорость обучения. По умолчанию 0.01.
momentum Вещественный гиперпараметр ≥ 0, ускоряющий градиентный спуск в соответствующем направлении и уменьшающий колебания. 0 — это обычный градиентный спуск. По умолчанию 0.0.
nesterov Булево значение. Применять ли импульс Нестерова. По умолчанию False.
name Строка. Имя, используемое для весов аккумулятора импульса, созданных оптимизатором.
weight_decay Вещественное число. Если установлено, применяется разложение весов.
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() это происходит автоматически после последней эпохи, и вам ничего не нужно делать.
loss_scale_factor Вещественное число или None. Если вещественное число, множитель масштаба умножается на потерю перед вычислением градиентов, а обратный множитель масштаба умножается на градиенты перед обновлением переменных. Полезно для предотвращения подтекания во время обучения с смешанной точностью. В качестве альтернативы keras.optimizers.LossScaleOptimizer автоматически установит множитель масштаба потерь.
gradient_accumulation_steps Целое число или None. Если целое число, переменные модели и оптимизатора не будут обновляться на каждом шаге; вместо этого они будут обновляться каждые gradient_accumulation_steps шаги, используя среднее значение градиентов с момента последнего обновления. Это известно как "накопление градиента". Это может быть полезно, когда размер вашей партии очень мал, для уменьшения шума градиента на каждом шаге обновления.
Атрибуты
learning_rate
variables

Методы

add_variable

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

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

add_variable_from_reference

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

add_variable_from_reference(
    reference_variable, name=None, initializer='zeros'
)

Добавить переменную со значениями нуль с формой и типом данных переменной-ссылки.

apply

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

apply(
    grads, trainable_variables=None
)

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

grads должен быть списком тензоров градиента с однозначным соответствием списку переменных, с которыми был построен оптимизатор.

trainable_variables может быть предоставлен при первом вызове для построения оптимизатора.

apply_gradients

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

apply_gradients(
    grads_and_vars
)

assign

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

assign(
    variable, value
)

Присвоить значение переменной.

Это следует использовать в оптимизаторах вместо variable.assign(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, нативной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, которое нужно добавить к переменной.

assign_add

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

assign_add(
    variable, value
)

Добавить значение к переменной.

Это следует использовать в оптимизаторах вместо variable.assign_add(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, нативной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, которое нужно добавить к переменной.

assign_sub

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

assign_sub(
    variable, value
)

Вычесть значение из переменной.

Это следует использовать в оптимизаторах вместо variable.assign_sub(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, нативной для бэкенда, или переменной Keras.

END_OF_DOCUMENT_MARKER
Аргументы
variable Переменная для обновления.
value Значение, которое нужно добавить к переменной.

build

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

build(
    variables
)

Инициализация переменных оптимизатора.

Оптимизатор SGD имеет одну переменную momentums, заданную только если self.momentum не равно 0.

Аргументы
var_list Список переменных модели, на которых нужно построить переменные SGD.

exclude_from_weight_decay

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

exclude_from_weight_decay(
    var_list=None, var_names=None
)

Исключить переменные из расчёта weight decay.

Этот метод должен быть вызван до вызова метода build оптимизатора. Вы можете указать конкретные переменные для исключения или задать список строк как ключевые слова, если любая из них встречается в имени переменной, то эта переменная исключается.

Аргументы
var_list Список Variable для исключения из weight decay.
var_names Список строк. Если любая строка из var_names встречается в имени переменной модели, то эта переменная модели исключается из weight decay. Например, var_names=['bias'] исключает все переменные смещения из weight decay.

finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

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

from_config

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

@classmethod
from_config(
    config, custom_objects=None
)

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

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

Аргументы
config Словарь Python, обычно вывод метода get_config.
custom_objects Словарь Python, сопоставляющий имена дополнительным пользовательским объектам Python, необходимым для повторного создания этого оптимизатора.
Возвращает
Экземпляр оптимизатора.

get_config

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

get_config()

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

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

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

Возвращает
Словарь Python.

load_own_variables

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

load_own_variables(
    store
)

Устанавливает состояние этого объекта оптимизатора.

save_own_variables

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

save_own_variables(
    store
)

Получает состояние этого объекта оптимизатора.

scale_loss

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

scale_loss(
    loss
)

Масштабирует потерю перед вычислением градиентов.

Масштабирует потерю перед вычислением градиентов в train_step. Это в первую очередь полезно во время обучения с применением смешанной точности, чтобы предотвратить числовой недолив.

set_weights

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

set_weights(
    weights
)

Устанавливает веса оптимизатора.

stateless_apply

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

stateless_apply(
    optimizer_variables, grads, trainable_variables
)

update_step

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

update_step(
    gradient, variable, learning_rate
)

Обновление шага с учётом градиента и связанной переменной модели.

© 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/keras/optimizers/SGD

Spec-Zone.ru

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