In [15]: a = np.array([0.5, 0.5, 0, 0, 0])
In [16]: b = np.array([1, 0, 0, 0, 0])
In [17]: entropy(a, b)
Out[17]: inf
In [18]: entropy(b, a)
Out[18]: 0.6931471805599453从他们的文档中,我希望两个人都返回inf,因为给出的方程是S = sum(pk * log(pk / qk), axis=0)。第18行的非无限输出的原因是什么?
发布于 2019-07-29 22:46:23
entropy(b, a)函数计算第一对:
>>> 1 * np.log(1/0.5)
>>> 0.6931471805599453对于entropy(a, b),有一种情况是除以零,即0.5/0,这将导致无限解.
对于其余部分,entropy()假定为0 * np.log(0/0) = 0。
发布于 2019-07-29 23:00:18
发布于 2021-04-19 06:33:36
当提供p和q时,熵函数计算KL-散度。KL-散度是不对称的,意思是KL(p,q)!=KL(q,p),除非是p==q.因此,你会得到不同的答案。
进一步说,正如其他答案所解释的那样,你的分布中有零,这意味着根据KL-散度的定义,我们将除以零。
KL(p,q) = sum(p * log(p/q)) https://stackoverflow.com/questions/57261983
复制相似问题