【发布时间】:2018-08-03 16:51:04
【问题描述】:
我尝试编写自定义二元交叉熵损失函数。 这是我的脚本:
def my_custom_loss(y_true,y_pred):
t_loss = (-1)*(y_true * K.log(y_pred) + (1 - y_true) * K.log(1 - y_pred))
return K.mean(t_loss)
当我使用这个损失函数运行我的脚本时,经过几次迭代,我得到 NaN 作为损失函数的输出。
然后我查看了TensorFlow文档,将损失函数修改为如下:
t_loss = K.max(y_pred,0)-y_pred * y_true + K.log(1+K.exp((-1)*K.abs(y_pred)))
代码运行没有任何问题。 我想知道是否有人可以解释为什么我的第一个损失函数会给出 NaN 输出。
二进制交叉熵:y * log(p) + (1-y) * log(1-p)
我有 sigmoid 函数作为我最后一层的激活。 所以'p'的值应该在0到1之间。这个范围应该存在日志。
谢谢。
【问题讨论】:
标签: python keras loss-function