Функция nn.l2_normalize
Функция nn.l2_normalize выполняет L2-нормализацию тензора,
то есть делит каждый элемент на L2-норму (евклидову норму)
вдоль указанных осей. Первым параметром функция принимает
входной тензор. Вторым параметром передается ось или список
осей, вдоль которых вычисляется норма. Третьим параметром
можно указать малое значение epsilon для избежания
деления на ноль. Четвертым параметром задается имя операции.
Синтаксис
tf.nn.l2_normalize(x, axis=None, epsilon=1e-12, name=None)
Пример
Давайте выполним L2-нормализацию одномерного тензора
вдоль оси 0:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5], dtype=tf.float32)
res = tf.nn.l2_normalize(t, axis=0)
print(res)
Результат выполнения кода:
tf.Tensor([0.13483997 0.26967993 0.4045199 0.5393599 0.6742999 ], shape=(5,), dtype=float32)
Пример
Давайте выполним L2-нормализацию двумерного тензора
вдоль оси 1:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
res = tf.nn.l2_normalize(t, axis=1)
print(res)
Результат выполнения кода:
tf.Tensor(
[[0.26726124 0.5345225 0.8017837 ]
[0.45584232 0.5698029 0.68376344]], shape=(2, 3), dtype=float32)
Пример
Давайте проверим, что L2-норма каждой строки после нормализации равна единице:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
res = tf.nn.l2_normalize(t, axis=1)
norm = tf.norm(res, axis=1)
print(norm)
Результат выполнения кода:
tf.Tensor([1. 1.], shape=(2,), dtype=float32)
Смотрите также
-
функцию
normalize,
которая выполняет нормализацию тензора по заданной норме -
функцию
moments,
которая вычисляет среднее и дисперсию по осям -
функцию
batch_normalization,
которая выполняет пакетную нормализацию -
функцию
softmax,
которая преобразует значения в вероятностное распределение