log_loss от sklearn дает nan, в то время как tennsflow.losses.log_loss работает - PullRequest
0 голосов
/ 03 мая 2018

У меня проблема двоичной классификации. Я использую 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), но почему тензорный поток не имеет этой проблемы?

1 Ответ

0 голосов
/ 04 мая 2018

Изменение dtype обоих массивов на 64-битное число с плавающей запятой исправляет это

dtype=np.float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...