tf.keras.backend.categorical_crossentropy
Категориальная кросс-энтропия между тензором вывода и тензором цели.
tf.keras.backend.categorical_crossentropy(
target, output, from_logits=False, axis=-1
)
| Аргументы |
target | Тензор такой же формы, как и output. |
output | Тензор, полученный в результате применения softmax (если from_logits равно True, в этом случае ожидается, что output — это логиты). |
from_logits | Булево значение, указывающее, является ли output результатом применения softmax или тензором логитов. |
axis | Целое число, определяющее ось каналов. axis=-1 соответствует формату данных channels_last', andось=1corresponds to data format`channels_first`. |
| Возвращает |
| Тензор вывода. |
| Возможные исключения |
ValueError | если axis не равно -1 и не является одной из осей output. |
Пример:
a = tf.constant([1., 0., 0., 0., 1., 0., 0., 0., 1.], shape=[3,3])
print(a)
tf.Tensor(
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]], shape=(3, 3), dtype=float32)
b = tf.constant([.9, .05, .05, .5, .89, .6, .05, .01, .94], shape=[3,3])
print(b)
tf.Tensor(
[[0.9 0.05 0.05]
[0.5 0.89 0.6 ]
[0.05 0.01 0.94]], shape=(3, 3), dtype=float32)
loss = tf.keras.backend.categorical_crossentropy(a, b)
print(np.around(loss, 5))
[0.10536 0.80467 0.06188]
loss = tf.keras.backend.categorical_crossentropy(a, a)
print(np.around(loss, 5))
[0. 0. 0.]