python-3.x - sklearn 的 log_loss 给出了 nan,而 tensorflow.losses.log_loss 有效

标签 python-3.x tensorflow scikit-learn log-likelihood

我有一个二元分类问题。 我正在使用 tensorflow.losses.log_loss 中的 log_loss。

为了检查,我使用 sklearn.metrics.log_loss。大多数时候,这两个函数给出相同的结果(只有 dtype 不同)。在某些情况下,sklearn 函数返回 NaNtf.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),但是为什么tensorflow没有这个问题呢?

最佳答案

将两个数组的 dtype 更改为 64 位 float 可以修复它

dtype=np.float64

例如添加 y_pred = y_pred.astype(np.float64)

关于python-3.x - sklearn 的 log_loss 给出了 nan,而 tensorflow.losses.log_loss 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50157689/

相关文章:

django - 在 django 的模型中使用相同的外键两次作为不同的字段

python - sklearn 逻辑回归 : does it use multiple background threads?

python - 用sklearn对弧度距离矩阵进行DBSCAN?

python - SKLearn 朴素贝叶斯 : add feature after tfidf vectorization

python - 列表不打印 (PIL)

python-3.x - PyCharm: 'Function Doesn' t 返回任何内容'

python - 为什么 Pysnmp 在 Python 3 中将字节保存为字符串

image-processing - 卷积神经网络中深度的解读

image-processing - mobilenet等图像分类模型中如何确定未知类别?

tensorflow seq2seq : Tensor' object is not iterable