BCEWithLogitsLoss в Керасе - PullRequest
       24

BCEWithLogitsLoss в Керасе

0 голосов
/ 15 апреля 2019

Как реализовать BCEWithLogitsLoss в кератах и ​​использовать его в качестве пользовательской функции потерь при использовании Tensorflow в качестве бэкэнда.

Я использовал BCEWithLogitsLoss в PyTorch, который был определен в torch.

Как реализовать то же самое в Керасе.?

1 Ответ

1 голос
/ 15 апреля 2019

В 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))
...