РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
342 of 824 menu

Метод apply_gradients класса Optimizer

Метод apply_gradients класса Optimizer применяет градиенты к переменным модели. Первым параметром метод принимает список пар (gradient, variable), где gradient - тензор градиента, а variable - переменная, к которой этот градиент применяется. Вторым необязательным параметром передаётся имя операции name. Метод выполняет один шаг оптимизации: обновляет значения переменных согласно алгоритму оптимизатора (SGD, Adam и так далее) и возвращает результат применения операции.

Синтаксис

optimizer.apply_gradients(grads_and_vars, [name])

Пример

Давайте создадим простую модель, вычислим градиенты и применим их с помощью оптимизатора:

import tensorflow as tf tf.random.set_seed(0) optimizer = tf.keras.optimizers.SGD(learning_rate=0.1) var = tf.Variable([1.0, 2.0, 3.0]) with tf.GradientTape() as tape: loss = tf.reduce_sum(var ** 2) grads = tape.gradient(loss, [var]) optimizer.apply_gradients(zip(grads, [var])) print(var)

Результат выполнения кода:

<tf.Variable 'Variable:0' shape=(3,) dtype=float32, numpy=array([0.8, 1.6, 2.4], dtype=float32)>

Пример

Давайте применим градиенты сразу к нескольким переменным:

<+python+> import tensorflow as tf tf.random.set_seed(0) optimizer = tf.keras.optimizers.SGD(learning_rate=0.1) var1 = tf.Variable([1.0, 2.0]) var2 = tf.Variable([3.0, 4.0]) with tf.GradientTape() as tape: loss = tf.reduce_sum(var1 ** 2) + tf.reduce_sum(var2 ** 2) grads = tape.gradient(loss, [var1, var2]) optimizer.apply_gradients(zip(grads, [var1, var2])) print(var1) print(var2) <-python+>

Результат выполнения кода:

<tf.Variable 'Variable:0' shape=(2,) dtype=float32, numpy=array([0.8, 1.6], dtype=float32)> <tf.Variable 'Variable:0' shape=(2,) dtype=float32, numpy=array([2.4, 3.2], dtype=float32)>

Пример

Давайте применим градиенты с оптимизатором Adam:

import tensorflow as tf tf.random.set_seed(0) optimizer = tf.keras.optimizers.Adam(learning_rate=0.01) var = tf.Variable([1.0, 2.0, 3.0]) for step in range(3): with tf.GradientTape() as tape: loss = tf.reduce_sum(var ** 2) grads = tape.gradient(loss, [var]) optimizer.apply_gradients(zip(grads, [var])) print(var)

Результат выполнения кода:

<tf.Variable 'Variable:0' shape=(3,) dtype=float32, numpy=array([0.97, 1.97, 2.97], dtype=float32)>

Смотрите также

  • класс Optimizer,
    который является базовым классом для всех оптимизаторов
  • метод minimize,
    который вычисляет градиенты и применяет их за один вызов
  • метод update_step,
    который выполняет один шаг обновления переменных
  • атрибут learning_rate,
    который задаёт скорость обучения оптимизатора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить