тензор потока с пользовательской функцией потерь - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь написать пользовательскую функцию потерь, которая включает 3 взвешенных фактора. y_true - логическое значение y_pred - для sigmoid, и поэтому оно должно быть между [0 ... 1]. Комбинации потерь: пропущено ложное число. работать, потому что тренировка, по-видимому, не приводит к низкому количеству счета, а также сообщаемые значения потерь при выполнении TF довольно низкие (например, 0,04). Выход обычно переключается 1 раз, поэтому потери должны быть> 1.

Кроме того, есть ли способ отладки этих функций потерь? Не используя pdb или операторы print в функции потерь.

def loss_wrapper (alpha, beta, gamma):
    def loss (y_true, y_pred):
        miss = tf.math.reduce_sum(y_true * (1-y_pred))
        false = tf.math.reduce_sum((1-y_true) * y_pred)
        a = tf.math.greater (y_pred, 0.5)
        count = tf.math.reduce_sum((tf.cast(tf.math.logical_xor (a[1:], a[:-1]), tf.float32)))
        return (miss*alpha + false*beta)/tf.cast(tf.size(y_true), tf.float32) + count*gamma
    return loss

loss = loss_wrapper (opt.alpha, opt.beta, opt.gamma)
...