Kullback-Leibler(KL)在张量流中损失

sdr*_*abb 4 probability loss tensorflow

我需要在量流中最小化KL损失.

我尝试这个函数tf.contrib.distributions.kl(dist_a,dist_b,allow_nan = False,name = None)但未实现.

我尝试手动实现它:

def kl_divergence(p,q):
    return p* tf.log(p/q)+(1-p)*tf.log((1-p)/(1-q))
Run Code Online (Sandbox Code Playgroud)

是正确的?

Dan*_*ter 9

你有什么交叉熵,KL分歧应该是这样的:

def kl_divergence(p, q): 
    return tf.reduce_sum(p * tf.log(p/q))
Run Code Online (Sandbox Code Playgroud)

这假设p和q都是浮点数的一维张量,具有相同的形状,并且每个它们的值总和为1.

如果pq是符合上述约束的同等大小的1-D张量的小批量,它也应该有效.