我正在使用
def celoss(y_true, y_pred):
bs = tf.shape(y_true)[0]
lin = tf.range(bs)
y_true = tf.squeeze(y_true, -1)
y_true = tf.cast(y_true, tf.int32)
y_true = tf.stack([lin, y_true], -1)
p = tf.gather_nd(y_pred, y_true)
return -tf.math.log(p + 1e-8)
在评估方面,它始终处于keras稀疏分类交叉熵的1e-3之内,但是在训练中,无论前向传递是否相同,在我测试过的各种问题上,它的表现都更加糟糕。那么为什么不回传呢?