Как вычислить CategoricalCrossentropy с помощью TensorFlow 2.0?

Я пытаюсь понять функцию потерь CategoricalCrossentropy() в TensorFlow 2.0. Когда я использую

tf.keras.metrics.CategoricalCrossentropy(actual, pred)

Я получаю следующую ошибку:

ValueError: значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any() или a.all()

Кто-нибудь может объяснить, как это можно исправить?


person Leevo    schedule 11.06.2019    source источник


Ответы (1)


Из документов для вычисления перекрестная энтропия, использование,

cce = tf.keras.metrics.CategoricalCrossentropy()
# cce.update_state(target, prediction)
cce.update_state([[0, 1, 0], [0, 0, 1]], [[0.05, 0.95, 0], [0.1, 0.8, 0.1]])

cce.result().numpy()
# 1.1769392

OTOH, если вы пытаетесь вычислить перекрестную энтропию потеря, вместо этого используйте tf.keras.losses.CategoricalCrossentropy:

cce = tf.keras.metrics.CategoricalCrossentropy()
cce([[0, 1, 0], [0, 0, 1]], [[0.05, 0.95, 0], [0.1, 0.8, 0.1]]).numpy()
# 1.1769392
person cs95    schedule 11.06.2019
comment
@Leevo Разве это не очевидно? При вычислении категориальной перекрестной энтропии A должно быть горячим. Я только что показал вам правильное использование, не вдаваясь в подробности о правильности ваших демонстрационных данных, потому что я предполагаю, что на самом деле это не то, с чем вы работаете. - person cs95; 12.06.2019