Функция nn.softmax
Функция nn.softmax применяется к тензору логитов и преобразует их в вероятности. Первым параметром функция принимает тензор с логитами. Вторым параметром можно передать ось, вдоль которой будет выполняться нормализация. Результатом работы функции является тензор той же формы, значения которого лежат в диапазоне от 0 до 1 и в сумме вдоль указанной оси дают единицу.
Синтаксис
tf.nn.softmax(logits, axis=None)
Пример
Давайте применим функцию к одномерному тензору логитов:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5], dtype=tf.float32)
res = tf.nn.softmax(t)
print(res)
Результат выполнения кода:
tf.Tensor([0.01165623 0.03168492 0.08612854 0.23412165 0.6364086 ], shape=(5,), dtype=float32)
Пример
Давайте применим функцию к двумерному тензору и проверим, что сумма вероятностей по последней оси равна единице:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
res = tf.nn.softmax(t)
print(res)
print(tf.reduce_sum(res, axis=-1))
Результат выполнения кода:
tf.Tensor(
[[0.09003057 0.24472848 0.66524094]
[0.09003057 0.24472848 0.66524094]], shape=(2, 3), dtype=float32)
tf.Tensor([1. 1.], shape=(2,), dtype=float32)
Пример
Давайте применим функцию с явно указанной осью нормализации:
<+python+>
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)
res = tf.nn.softmax(t, axis=0)
print(res)
print(tf.reduce_sum(res, axis=0))
<-python+>
Результат выполнения кода:
tf.Tensor(
[[0.04742587 0.04742587 0.04742587]
[0.95257413 0.95257413 0.95257413]], shape=(2, 3), dtype=float32)
tf.Tensor([1. 1. 1.], shape=(3,), dtype=float32)
Смотрите также
-
функцию
log_softmax,
которая вычисляет логарифм от softmax -
функцию
sigmoid,
которая применяет сигмоиду к тензору -
функцию
softmax_cross_entropy_with_logits,
которая вычисляет кросс-энтропию с softmax -
функцию
sparse_softmax_cross_entropy_with_logits,
которая вычисляет разреженную кросс-энтропию с softmax