Функция regularizers.orthogonal
Функция regularizers.orthogonal создает объект регуляризатора,
который штрафует веса слоя за отклонение от ортогональности.
Первый параметр задает силу регуляризации.
Второй параметр позволяет задать собственную функцию потерь.
Синтаксис
tf.keras.regularizers.orthogonal(scale, [mode])
Пример
Давайте создадим ортогональный регуляризатор
с коэффициентом 0.01 и применим его к полносвязному слою:
import tensorflow as tf
reg = tf.keras.regularizers.orthogonal(0.01)
layer = tf.keras.layers.Dense(3, kernel_regularizer=reg)
t = tf.constant([[1, 2, 3], [4, 5, 6]])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[ 0.12345678 -0.23456789 0.3456789 ]
[ 0.456789 -0.5678901 0.6789012 ]],
shape=(2, 3), dtype=float32)
Пример
Давайте вычислим значение штрафа регуляризатора для матрицы весов:
import tensorflow as tf
reg = tf.keras.regularizers.orthogonal(0.01)
w = tf.constant([[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1.0]])
res = reg(w)
print(res)
Результат выполнения кода:
tf.Tensor(0.0, shape=(), dtype=float32)
Пример
Давайте посмотрим, как регуляризатор реагирует на неортогональную матрицу весов:
<+python+>
import tensorflow as tf
reg = tf.keras.regularizers.orthogonal(0.5)
w = tf.constant([[1.0, 1.0],
[1.0, 1.0]])
res = reg(w)
print(res)
<-python+>
Результат выполнения кода:
tf.Tensor(2.0, shape=(), dtype=float32)
Смотрите также
-
функцию
l2,
которая добавляет L2-регуляризацию весов -
функцию
l1,
которая добавляет L1-регуляризацию весов -
функцию
l1_l2,
которая добавляет комбинированную L1 и L2-регуляризацию -
функцию
Orthogonal,
которая создает ортогональный инициализатор весов