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 Гиперпараметр типа float, значение которого >= 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.

Аргументы
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
)

Исключает переменные из затухания весов.

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

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

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