我正在尝试编写一个包含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)