Могу ли я использовать распределение реальной вероятности в качестве меток для tf.nn.softmax_cross_entropy_with_logits? - PullRequest
0 голосов
/ 27 июня 2018

В руководстве Tensorflow описание этикеток приведено ниже:

метки: каждая строка меток [i] должна иметь правильное распределение вероятностей.

Значит ли это, что метки могут быть такими, как показано ниже, если у меня есть реальные вероятностные распределения классов для каждого входа?

[[0.1, 0.2, 0.05, 0.007 ... ]
[0.001, 0.2, 0.5, 0.007 ... ]
[0.01, 0.0002, 0.005, 0.7 ... ]]

И это более эффективно, чем ярлыки с горячим кодированием?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 июня 2018

Одним словом, да, вы можете использовать вероятности в качестве меток.

В документации для tf.nn.softmax_cross_entropy_with_logits сказано, что вы можете:

ПРИМЕЧАНИЕ: Хотя классы являются взаимоисключающими, их вероятности не должно быть Все, что требуется, это то, что каждая строка labels действительное распределение вероятностей. Если это не так, вычисление градиент будет неправильным.

Если используется эксклюзивный labels (где один и только один класс является истинным одновременно), см. sparse_softmax_cross_entropy_with_logits.

Давайте рассмотрим короткий пример, чтобы убедиться, что он работает нормально:

import numpy as np
import tensorflow as tf

labels = np.array([[0.2, 0.3, 0.5], [0.1, 0.7, 0.2]])
logits = np.array([[5.0, 7.0, 8.0], [1.0, 2.0, 4.0]])

sess = tf.Session()
ce = tf.nn.softmax_cross_entropy_with_logits(
     labels=labels, logits=logits).eval(session=sess)
print(ce)  # [ 1.24901222  1.86984602]

# manual check
predictions = np.exp(logits)
predictions = predictions / predictions.sum(axis=1, keepdims=True)
ce_np = (-labels * np.log(predictions)).sum(axis=1)
print(ce_np)  # [ 1.24901222  1.86984602]

А если у вас есть эксклюзивные метки, лучше использовать горячее кодирование и tf.nn.sparse_softmax_cross_entropy_with_logits, а не tf.nn.softmax_cross_entropy_with_logits и явное представление вероятности, например [1.0, 0.0, ...]. Таким образом, вы можете получить более короткое представление.

...