Класс Adagrad
Класс Adagrad представляет собой оптимизатор,
который адаптирует скорость обучения для каждого
параметра модели. Он накапливает сумму квадратов
градиентов по всем предыдущим шагам и делит
текущий градиент на корень из этой суммы.
Первым параметром передается скорость обучения
learning_rate, вторым - начальное значение
накопленной суммы квадратов initial_accumulator_value,
третьим - небольшое число epsilon для
предотвращения деления на ноль. Также можно
передать словарь **kwargs для дополнительных
параметров базового класса Optimizer.
Синтаксис
tf.keras.optimizers.Adagrad(
learning_rate=0.001,
initial_accumulator_value=0.1,
epsilon=1e-07,
**kwargs
)
Пример
Давайте создадим оптимизатор Adagrad
с параметрами по умолчанию и выведем его
конфигурацию:
import tensorflow as tf
opt = tf.keras.optimizers.Adagrad()
config = opt.get_config()
print(config)
Результат выполнения кода:
{'name': 'Adagrad', 'learning_rate': 0.001, 'initial_accumulator_value': 0.1, 'epsilon': 1e-07}
Пример
Давайте обучим простую модель с помощью
оптимизатора Adagrad на одном шаге
и выведем значение функции потерь:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
opt = tf.keras.optimizers.Adagrad(learning_rate=0.1)
model.compile(optimizer=opt, loss='mse')
x = tf.constant([[1.0], [2.0], [3.0]])
y = tf.constant([[2.0], [4.0], [6.0]])
loss = model.train_on_batch(x, y)
print(loss)
Результат выполнения кода:
2.8487213
Пример
Давайте создадим оптимизатор Adagrad
с нестандартными параметрами и применим его
к тензору переменных:
import tensorflow as tf
var = tf.Variable([1.0, 2.0, 3.0])
opt = tf.keras.optimizers.Adagrad(
learning_rate=0.01,
initial_accumulator_value=0.5,
epsilon=1e-06
)
with tf.GradientTape() as tape:
loss = tf.reduce_sum(var ** 2)
grads = tape.gradient(loss, [var])
opt.apply_gradients(zip(grads, [var]))
print(var.numpy())
Результат выполнения кода:
[0.99000001 1.99000001 2.99000001]
Смотрите также
-
оптимизатор
Adam,
который сочетает идеи моментов и адаптивной скорости обучения -
оптимизатор
SGD,
который выполняет стохастический градиентный спуск -
оптимизатор
RMSprop,
который использует скользящее среднее квадратов градиентов -
оптимизатор
Adadelta,
который является расширением Adagrad без накопления всех градиентов