Класс Ftrl
Класс Ftrl представляет оптимизатор
FTRL, который сочетает L1- и L2-регуляризацию
и хорошо подходит для разреженных данных.
Первым параметром передается скорость обучения
learning_rate, вторым - начальное значение
накопленного градиента learning_rate_power,
третьим - коэффициент L1-регуляризации
l1_regularization_strength, четвертым -
коэффициент L2-регуляризации
l2_regularization_strength.
Дополнительно можно задать beta,
initial_accumulator_value и другие параметры.
Синтаксис
tf.keras.optimizers.Ftrl(
learning_rate=0.001,
learning_rate_power=-0.5,
initial_accumulator_value=0.1,
l1_regularization_strength=0.0,
l2_regularization_strength=0.0,
beta=0.0,
name='Ftrl',
**kwargs
)
Пример
Давайте создадим оптимизатор Ftrl
со стандартными параметрами и выведем его
конфигурацию:
import tensorflow as tf
opt = tf.keras.optimizers.Ftrl(learning_rate=0.01)
config = opt.get_config()
print(config['learning_rate'])
print(config['l1_regularization_strength'])
print(config['l2_regularization_strength'])
Результат выполнения кода:
0.01
0.0
0.0
Пример
Давайте применим оптимизатор Ftrl
для обучения простой модели на тензорах:
import tensorflow as tf
tf.random.set_seed(0)
opt = tf.keras.optimizers.Ftrl(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])
opt.apply_gradients(zip(grads, [var]))
print(var.numpy())
Результат выполнения кода:
[0.9 1.9 2.9]
Пример
Давайте обучим модель с оптимизатором
Ftrl и L1-регуляризацией:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(2,))
])
model.compile(
optimizer=tf.keras.optimizers.Ftrl(
learning_rate=0.1,
l1_regularization_strength=0.01
),
loss='mse'
)
x = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
y = tf.constant([[1.0], [2.0], [3.0]])
history = model.fit(x, y, epochs=3, verbose=0)
print(round(history.history['loss'][-1], 4))
Результат выполнения кода:
1.5447