具有自定义损失功能的张量流

时间:2020-02-13 14:28:55

标签: python tensorflow loss-function

我正在尝试编写一个包含3个加权因子的自定义损失函数。 y_true是布尔值 y_pred输出为S形,因此应介于[0 ... 1]之间 损失合计: 小姐 假 count #times输出将切换(如果设置为0.5)

我怀疑这是行不通的,因为训练似乎并没有产生很少的计数,并且还报告了运行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)

0 个答案:

没有答案