У меня проблема двоичной классификации.
Я использую log_loss от tensorflow.losses.log_loss
.
Для проверки я использую sklearn.metrics.log_loss
. В большинстве случаев две функции дают один и тот же результат (только разница в dtype). В некоторых случаях функция sklearn
возвращает NaN
, а tf.losses.log_loss
возвращает правильное значение.
данные здесь:
https://pastebin.com/BvDgDnVT
Код:
import sklearn.metrics
import tensorflow as tf
y_true = [... see pastebin link]
y_pred = [... see pastebin link]
loss_sk = sklearn.metrics.log_loss(y_true, y_pred, labels=[0, 1]) # -> returns NaN
with tf.Session() as sess:
loss_tf = tf.losses.log_loss(y_true, y_pred).eval(session=sess) # -> returns 0.0549
Кажется, что-то происходит log(0)
, но почему тензорный поток не имеет этой проблемы?