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

Класс Optimizer

Класс Optimizer является абстрактным базовым классом для всех оптимизаторов в TensorFlow. Он напрямую не используется для обучения моделей, но задаёт общий интерфейс, который реализуют конкретные оптимизаторы: SGD, Adam, RMSprop и другие. Класс хранит гиперпараметры (например, скорость обучения), управляет переменными состояния оптимизатора и предоставляет методы для применения градиентов к весам модели.

Основные атрибуты класса: learning_rate - скорость обучения, iterations - количество выполненных шагов оптимизации, variables - список переменных состояния оптимизатора. Основные методы: apply_gradients - применяет градиенты к переменным, minimize - вычисляет градиенты и применяет их за один вызов, get_config - возвращает конфигурацию оптимизатора, from_config - создаёт оптимизатор из конфигурации.

Синтаксис

tf.keras.optimizers.Optimizer(learning_rate, [name], [weight_decay])

Пример

Напрямую класс Optimizer не создают. Вместо него используют конкретные оптимизаторы, например SGD. Создадим оптимизатор SGD со скоростью обучения 0.01 и применим его для обучения простой модели:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) optimizer = tf.keras.optimizers.SGD(learning_rate=0.01) print(type(optimizer).__mro__[1])

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

<class 'keras.src.optimizers.base_optimizer.BaseOptimizer'>

Пример

Посмотрим на атрибут learning_rate и метод get_config конкретного оптимизатора:

import tensorflow as tf optimizer = tf.keras.optimizers.Adam(learning_rate=0.001) print(optimizer.learning_rate) print(optimizer.iterations) print(optimizer.get_config())

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

0.001 <tf.Variable 'iteration:0' shape=() dtype=int64, numpy=0> {'name': 'adam', 'learning_rate': 0.001, 'beta_1': 0.9, 'beta_2': 0.999, 'epsilon': 1e-07, 'amsgrad': False}

Пример

Применим метод apply_gradients, унаследованный от класса Optimizer, чтобы вручную обновить переменную:

import tensorflow as tf var = tf.Variable([1.0, 2.0, 3.0]) optimizer = tf.keras.optimizers.SGD(learning_rate=0.1) 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)>

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

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