Функция regularizers.l1
Функция regularizers.l1 создает объект регуляризатора,
который применяет L1-штраф к весам слоя. L1-регуляризация
добавляет к функции потерь сумму абсолютных значений весов,
умноженную на коэффициент регуляризации. Это помогает
уменьшить переобучение и заставляет часть весов становиться
нулевыми, что приводит к разреженной модели. Первым параметром
функция принимает коэффициент регуляризации l1,
по умолчанию равный 0.01.
Синтаксис
tf.keras.regularizers.l1(l1=0.01)
Пример
Давайте создадим L1-регуляризатор с коэффициентом
0.01 и применим его к слою Dense:
import tensorflow as tf
reg = tf.keras.regularizers.l1(0.01)
layer = tf.keras.layers.Dense(3, kernel_regularizer=reg)
print(layer.kernel_regularizer)
Результат выполнения кода:
<keras.src.regularizers.regularizers.L1 object at 0x...>
Пример
Давайте вычислим значение L1-штрафа для тензора весов:
import tensorflow as tf
reg = tf.keras.regularizers.l1(0.01)
t = tf.constant([1.0, -2.0, 3.0, -4.0])
res = reg(t)
print(res)
Результат выполнения кода:
tf.Tensor(0.1, shape=(), dtype=float32)
Пример
Давайте построим модель с L1-регуляризацией на скрытом слое и обучим ее на простых данных:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(4, activation='relu',
kernel_regularizer=tf.keras.regularizers.l1(0.01),
input_shape=(3,)),
tf.keras.layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')
x = np.random.rand(10, 3)
y = np.random.rand(10, 1)
model.fit(x, y, epochs=1, verbose=0)
print(model.layers[0].kernel_regularizer)
Результат выполнения кода:
<keras.src.regularizers.regularizers.L1 object at 0x...>