2017-04-08 74 views
2

我需要最小化KL loss,tensorflow張力流中的Kullback-Leibler(KL)損失

我試試這個功能tf.contrib.distributions.kl(dist_a,dist_b,allow_nan = False,name = None)但沒有實現。

我嘗試手動implemets它:

def kl_divergence(p,q): 
    return p* tf.log(p/q)+(1-p)*tf.log((1-p)/(1-q)) 

是正確的?

+0

[TensorFlow中的KL Divergence]的可能重複(http://stackoverflow.com/questions/41863814/kl-divergence-in-tensorflow) – Transcendental

回答

6

你有什麼存在的交叉熵,KL信息量應該是這樣的:

def kl_divergence(p, q): 
    return tf.reduce_sum(p * tf.log(p/q)) 

這假定p和q相同形狀的彩車都是1-d張量,併爲他們的每一個值總和爲1.

如果pq是同等大小的小批次一維張量服從上述約束條件,它也應該有效。

+0

非常感謝,並且p和q是多維的? – sdrabb

+0

你的意思是說,p和q是你想優化的小批量分銷?我認爲我對這種情況應該沒有問題。如果不是這樣,那麼我需要更多的上下文。 –

+0

是的,我的意思是這種情況,謝謝 – sdrabb

相關問題