如何使用 TensorFlow 后端计算 Keras 中的 KL 散度?

Abh*_*tia 6 keras tensorflow

使用 tensorflow 作为后端时,如何计算 keras 中的 kl 散度?我计算 L1 损失如下:

def l1_loss(y_true, y_pred):
    return K.sum(K.abs(y_pred - y_true), axis=-1)
Run Code Online (Sandbox Code Playgroud)

Mat*_*gro 6

Keras 已经实现了 KL-divergence,可以在这里看到,代码如下:

def kullback_leibler_divergence(y_true, y_pred):
    y_true = K.clip(y_true, K.epsilon(), 1)
    y_pred = K.clip(y_pred, K.epsilon(), 1)
    return K.sum(y_true * K.log(y_true / y_pred), axis=-1)
Run Code Online (Sandbox Code Playgroud)

所以只需使用 kld、KLD 或 kullback_leibler_divergence 作为损失。

  • 该 KLD 的预期投入是什么?y_true 和 y_pred 是什么意思?我看到使用 Mu 和 Sigma 的公式,但 y_true 和 y_pred 不是吗?它们是否应该有某种特定的形状,例如以 2 结尾?或者其中涉及什么数学技巧? (2认同)