Функция reduce_logsumexp
Функция reduce_logsumexp вычисляет значение
логарифма от суммы экспонент элементов тензора.
Математически она эквивалентна выражению
log(sum(exp(x))), но реализована численно
устойчивым способом, что предотвращает переполнение
при работе с большими значениями.
Первым параметром функция принимает входной тензор.
Вторым параметром передается ось или список осей,
по которым выполняется редукция. Третьим параметром
можно указать keepdims - сохранять ли
размерность после редукции. Также доступен параметр
name для именования операции.
Синтаксис
tf.reduce_logsumexp(input_tensor, axis=None, keepdims=False, name=None)
Пример
Давайте вычислим логарифм суммы экспонент для одномерного тензора без указания оси:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5], dtype=tf.float32)
res = tf.reduce_logsumexp(t)
print(res)
Результат выполнения кода:
tf.Tensor(5.4519143, shape=(), dtype=float32)
Пример
Давайте применим редукцию по оси 0 для
двумерного тензора:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
res = tf.reduce_logsumexp(t, axis=0)
print(res)
Результат выполнения кода:
tf.Tensor([4.0485873 5.0485873 6.0485873], shape=(3,), dtype=float32)
Пример
Давайте применим редукцию по оси 1 с
сохранением размерности:
Результат выполнения кода:
tf.Tensor(
[[3.407606 ]
[6.407606 ]], shape=(2, 1), dtype=float32)
Пример
Давайте применим редукцию сразу по всем осям,
указав axis=None:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
res = tf.reduce_logsumexp(t, axis=None)
print(res)
Результат выполнения кода:
tf.Tensor(6.456193, shape=(), dtype=float32)
Смотрите также
-
функцию
reduce_sum,
которая вычисляет сумму элементов тензора -
функцию
reduce_mean,
которая вычисляет среднее значение элементов -
функцию
exp,
которая вычисляет экспоненту элементов -
функцию
log,
которая вычисляет натуральный логарифм