skj*_*rns 3 python-3.x scikit-learn tensorflow log-likelihood
我有一个二元分类问题。我正在使用来自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
Run Code Online (Sandbox Code Playgroud)
好像有些log(0)事情发生了,但是为什么tensorflow没有这个问题呢?
将两个数组的 dtype 更改为 64 位浮点数可修复它
dtype=np.float64
Run Code Online (Sandbox Code Playgroud)
例如添加 y_pred = y_pred.astype(np.float64)
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |