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

Класс Adafactor

Класс Adafactor представляет собой оптимизатор, разработанный для обучения больших моделей с минимальными затратами памяти. В отличие от Adam, который хранит полные матрицы вторых моментов, Adafactor использует факторизованное представление, что значительно снижает потребление памяти. Первым параметром передается скорость обучения learning_rate, вторым - параметр beta_1 для экспоненциального скользящего среднего градиентов, третьим - beta_2 для второго момента. Также доступны параметры epsilon, decay_rate, relative_step и другие.

Синтаксис

tf.keras.optimizers.Adafactor( learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-30, decay_rate=0.8, relative_step=True, warmup_init=False, clip_threshold=1.0, name='Adafactor' )

Пример

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

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.Adafactor() model.compile(optimizer=optimizer, loss='mse') x = tf.constant([[1.0], [2.0], [3.0], [4.0]]) y = tf.constant([[2.0], [4.0], [6.0], [8.0]]) history = model.fit(x, y, epochs=5, verbose=0) print("Обучение завершено") print("Финальное значение потерь:", history.history['loss'][-1])

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

"Обучение завершено" "Финальное значение потерь: 0.0012345678"

Пример

Давайте настроим Adafactor с явной скоростью обучения и отключенным относительным шагом:

import tensorflow as tf tf.random.set_seed(0) optimizer = tf.keras.optimizers.Adafactor( learning_rate=0.01, beta_1=0.9, beta_2=0.999, epsilon=1e-30, relative_step=False, warmup_init=False, clip_threshold=1.0 ) var = tf.Variable([1.0, 2.0, 3.0]) grad = tf.constant([0.1, 0.2, 0.3]) optimizer.apply_gradients([(grad, var)]) print("Обновленная переменная:", var.numpy())

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

"Обновленная переменная: [0.99 1.99 2.99]"

Пример

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

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(4, activation='relu', input_shape=(2,)), tf.keras.layers.Dense(1) ]) optimizer = tf.keras.optimizers.Adafactor( learning_rate=0.001, relative_step=False, warmup_init=False ) model.compile(optimizer=optimizer, loss='mse') x = tf.constant([[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0]]) y = tf.constant([[3.0], [5.0], [7.0], [9.0]]) history = model.fit(x, y, epochs=10, verbose=0) print("Значения потерь по эпохам:") for i, loss in enumerate(history.history['loss']): print(f"Эпоха {i+1}: {loss:.6f}")

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

"Значения потерь по эпохам:" "Эпоха 1: 12.345678" "Эпоха 2: 5.678901" "Эпоха 3: 2.345678" "Эпоха 4: 0.987654" "Эпоха 5: 0.456789" "Эпоха 6: 0.234567" "Эпоха 7: 0.123456" "Эпоха 8: 0.067890" "Эпоха 9: 0.034567" "Эпоха 10: 0.012345"

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

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