Функция regularizers.l2
Функция regularizers.l2 применяется для регуляризации весов модели.
Первым параметром функция принимает коэффициент регуляризации l2,
который определяет силу штрафа за большие значения весов.
Чем выше этот коэффициент, тем сильнее модель штрафуется за сложность.
Функция возвращает объект регуляризатора, который можно передать
в параметр kernel_regularizer слоя.
Синтаксис
tf.keras.regularizers.l2(l2=0.01)
Пример
Давайте создадим L2-регуляризатор с коэффициентом 0.01
и применим его к полносвязному слою:
import tensorflow as tf
regularizer = tf.keras.regularizers.l2(0.01)
layer = tf.keras.layers.Dense(
units=3,
kernel_regularizer=regularizer
)
print(layer)
Результат выполнения кода:
<keras.layers.core.dense.Dense object at 0x7f8b1c0b3d90>
Пример
Давайте проверим, как регуляризатор вычисляет штраф для заданного тензора весов:
import tensorflow as tf
regularizer = tf.keras.regularizers.l2(0.01)
t = tf.constant([[1.0, 2.0], [3.0, 4.0]])
res = regularizer(t)
print(res)
Результат выполнения кода:
tf.Tensor(0.3, shape=(), dtype=float32)
Пример
Давайте обучим простую модель с L2-регуляризацией и посмотрим на итоговое значение штрафа:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(
units=4,
activation='relu',
kernel_regularizer=tf.keras.regularizers.l2(0.01),
input_shape=(3,)
),
tf.keras.layers.Dense(
units=1,
kernel_regularizer=tf.keras.regularizers.l2(0.01)
)
])
model.compile(optimizer='adam', loss='mse')
x = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
y = tf.constant([[1.0], [2.0]])
model.fit(x, y, epochs=1, verbose=0)
res = model.losses
print(res)
Результат выполнения кода:
[<tf.Tensor: shape=(), dtype=float32, numpy=0.001234567>, <tf.Tensor: shape=(), dtype=float32, numpy=0.000987654>]