Регулаторите ви позволяват да прилагате наказания върху параметри на слоя или активност на слоя по време на оптимизацията. Тези наказания се сумират във функцията за загуба, която мрежата оптимизира.

регулатори

Санкциите за регулиране се прилагат на всеки слой. Точният API ще зависи от слоя, но много слоеве (напр. Плътен, Conv1D, Conv2D и Conv3D) имат унифициран API.

Тези слоеве излагат 3 аргумента на ключови думи:

  • kernel_regularizer: Regularizer за прилагане на наказание върху ядрото на слоя
  • bias_regularizer: Regularizer за прилагане на наказание върху пристрастието на слоя
  • activity_regularizer: Regularizer за прилагане на наказание върху изхода на слоя

Стойността, върната от обекта Activity_regularizer, се разделя на размера на входящата партида, така че относителното тегло между регулаторите на теглото и регулаторите на активността да не се променя с размера на партидата.

Можете да получите достъп до санкциите за регулиране на слой, като извикате layer.losses след извикване на слоя на входове:

Налични регулатори

Следните вградени регулатори се предлагат като част от модула tf.keras.regularizers:

L1 клас

Регулатор, който прилага наказание за регулиране L1.

Наказанието за регулиране на L1 се изчислява като: загуба = l1 * намаляване_сума (abs (x))

L1 може да бъде предаден на слой като идентификатор на низ:

В този случай използваната стойност по подразбиране е l1 = 0,01 .

Атрибути

  • l1: Поплавък; L1 коефициент на регуларизация.

L2 клас

Регулатор, който прилага наказание за регулиране L2.

Наказанието за регулиране на L2 се изчислява като: загуба = l2 * намаляване_сума (квадрат (x))

L2 може да бъде предаден на слой като идентификатор на низ:

В този случай използваната стойност по подразбиране е l2 = 0,01 .

Атрибути

  • l2: Поплавък; L2 коефициент на регуларизация.

l1_l2 функция

Създайте регулатор, който прилага наказания L1 и L2.

Наказанието за регулиране на L1 се изчислява като: загуба = l1 * намаляване_сума (abs (x))

Наказанието за регулиране на L2 се изчислява като: загуба = l2 * намаляване_сума (квадрат (x))

Аргументи

  • l1: Поплавък; L1 коефициент на регуларизация.
  • l2: Поплавък; L2 коефициент на регуларизация.

Се завръща

Регулатор на L1L2 с дадените фактори на регуларизация.

Създаване на персонализирани регулатори

Прости извикващи

Регулаторът на тегло може да бъде всеки извикваем, който приема като входен тензор на теглото (например ядрото на слой Conv2D) и връща скаларна загуба. Като този:

Подкласове на регуларизатора

Ако трябва да конфигурирате вашия регуларизатор чрез различни аргументи (напр. L1 и l2 аргументи в l1_l2), трябва да го внедрите като подклас на tf.keras.regularizers.Regularizer .

Ето един прост пример:

По желание можете също да внедрите метода get_config и метода на класа от_config, за да поддържате сериализация - точно както при всеки обект на Keras. Пример: