BCEWithLogitsLoss在凯拉斯

时间:2019-04-15 06:40:30

标签: python keras deep-learning loss-function

如何在keras中实现BCEWithLogitsLoss并在将Tensorflow用作后端时将其用作自定义损失函数。

我在BCEWithLogitsLoss中定义的PyTorch中使用了torch

如何在Keras中实现相同功能?

1 个答案:

答案 0 :(得分:1)

在TensorFlow中,您可以直接调用tf.nn.sigmoid_cross_entropy_with_logits,这在TensorFlow 1.x和2.0中都可以使用。

如果要坚持使用Keras API,请使用tf.losses.BinaryCrossentropy并在构造函数调用中设置from_logits=True

与PyTorch不同,API中没有明确的示例权重。您可以改为为损失设置reduction=tf.keras.losses.Reduction.NONE,通过显式乘法进行加权,并使用tf.reduce_mean减少损失。

xent = tf.losses.BinaryCrossEntropy(
    from_logits=True,
    reduction=tf.keras.losses.Reduction.NONE)
loss = tf.reduce_mean(xent(targets, pred) * weights))