Класс Adadelta
Класс Adadelta представляет собой оптимизатор, который
является расширением алгоритма Adagrad. Вместо накопления
всех прошлых квадратов градиентов Adadelta ограничивает
окно накопления фиксированным размером. Первым параметром
передаётся скорость обучения learning_rate, вторым -
коэффициент сглаживания rho, третьим - малое число
epsilon для численной стабильности.
Синтаксис
tf.keras.optimizers.Adadelta(
learning_rate=0.001,
rho=0.95,
epsilon=1e-07,
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='adadelta',
**kwargs
)
Пример
Давайте создадим оптимизатор Adadelta со значениями параметров по умолчанию:
import tensorflow as tf
opt = tf.keras.optimizers.Adadelta()
print(opt)
Результат выполнения кода:
"<keras.src.optimizers.adadelta.Adadelta object at 0x...>"
Пример
Давайте создадим оптимизатор с нестандартной скоростью
обучения и коэффициентом rho:
import tensorflow as tf
opt = tf.keras.optimizers.Adadelta(
learning_rate=0.01,
rho=0.9
)
print(opt.learning_rate)
print(opt.rho)
Результат выполнения кода:
0.01
0.9
Пример
Давайте применим оптимизатор Adadelta для обучения простой модели на тензорах:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(
optimizer=tf.keras.optimizers.Adadelta(learning_rate=0.1),
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=50, verbose=0)
print(round(history.history['loss'][-1], 4))
Результат выполнения кода:
0.0