Функция nn.log_softmax
Функция nn.log_softmax применяет функцию softmax к входному тензору и возвращает логарифм полученных значений. Первым параметром передается входной тензор с логитами (сырыми предсказаниями модели). Вторым параметром можно указать ось, вдоль которой будет вычисляться softmax. Функция полезна при построении нейронных сетей для классификации, так как позволяет избежать проблем с численной нестабильностью при вычислении перекрестной энтропии.
Синтаксис
tf.nn.log_softmax(logits, axis=None, name=None)
Пример
Давайте применим функцию nn.log_softmax к одномерному тензору:
import tensorflow as tf
t = tf.constant([1.0, 2.0, 3.0])
res = tf.nn.log_softmax(t)
print(res)
Результат выполнения кода:
tf.Tensor([-2.40760596 -1.40760596 -0.40760596], shape=(3,), dtype=float32)
Пример
Давайте применим функцию nn.log_softmax к двумерному тензору с указанием оси:
import tensorflow as tf
t = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
res = tf.nn.log_softmax(t, axis=1)
print(res)
Результат выполнения кода:
tf.Tensor(
[[-2.40760596 -1.40760596 -0.40760596]
[-2.40760596 -1.40760596 -0.40760596]], shape=(2, 3), dtype=float32)
Пример
Давайте проверим, что сумма экспонент от результата работы функции равна единице:
import tensorflow as tf
t = tf.constant([1.0, 2.0, 3.0])
res = tf.nn.log_softmax(t)
print(tf.reduce_sum(tf.exp(res)))
Результат выполнения кода:
tf.Tensor(1.0, shape=(), dtype=float32)
Смотрите также
-
функцию
softmax,
которая вычисляет обычный softmax без логарифмирования -
функцию
softmax_cross_entropy_with_logits,
которая вычисляет перекрестную энтропию с softmax -
функцию
sparse_softmax_cross_entropy_with_logits,
которая вычисляет перекрестную энтропию с разреженными метками -
функцию
sigmoid,
которая вычисляет сигмоидную функцию активации