РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
469 of 824 menu

Функция regularizers.l1_l2

Функция regularizers.l1_l2 создает объект регуляризатора, который комбинирует L1- и L2-штрафы. Такой регуляризатор применяется к весам слоя и добавляет к функции потерь сумму модулей весов (L1) и сумму квадратов весов (L2). Первым параметром передается коэффициент L1, вторым - коэффициент L2. Регуляризатор передается в слой через параметр kernel_regularizer или bias_regularizer.

Синтаксис

tf.keras.regularizers.l1_l2(l1=0.01, l2=0.01)

Пример

Давайте создадим регуляризатор с коэффициентами L1 и L2 по умолчанию и посмотрим на его тип:

import tensorflow as tf reg = tf.keras.regularizers.l1_l2() print(reg)

Результат выполнения кода:

<keras.src.regularizers.regularizers.L1L2 object at 0x7f8b1c0a5d90>

Пример

Давайте создадим регуляризатор с явными коэффициентами 0.001 для L1 и 0.005 для L2:

<+python+> import tensorflow as tf reg = tf.keras.regularizers.l1_l2(l1=0.001, l2=0.005) print(reg.l1) print(reg.l2) <-python+>

Результат выполнения кода:

0.001 0.005

Пример

Давайте применим регуляризатор к полносвязному слою и вычислим его штраф для конкретных весов:

import tensorflow as tf tf.random.set_seed(0) reg = tf.keras.regularizers.l1_l2(l1=0.1, l2=0.1) layer = tf.keras.layers.Dense( units=3, kernel_regularizer=reg ) layer.build((None, 2)) penalty = reg(layer.kernel) print(penalty)

Результат выполнения кода:

tf.Tensor(0.23281413, shape=(), dtype=float32)

Пример

Давайте обучим простую модель с комбинированной регуляризацией и посмотрим итоговую функцию потерь:

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.l1_l2( l1=0.01, l2=0.01 ), input_shape=(3,) ), tf.keras.layers.Dense(units=1) ]) 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]]) history = model.fit(x, y, epochs=1, verbose=0) print(history.history['loss'])

Результат выполнения кода:

<~show-> <+python+> [11.73033618927002] <-python-> <-show->

Смотрите также

  • функцию l1,
    которая применяет только L1-регуляризацию
  • функцию l2,
    которая применяет только L2-регуляризацию
  • оптимизатор Adam,
    который часто используется вместе с регуляризацией
  • оптимизатор SGD,
    который также применяется при обучении с регуляризацией
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить