scipy.special.kl_div#

scipy.special.kl_div(x, y, out=None) = <ufunc 'kl_div'>#

用于计算 Kullback-Leibler 散度的逐元素函数。

\[\begin{split}\mathrm{kl\_div}(x, y) = \begin{cases} x \log(x / y) - x + y & x > 0, y > 0 \\ y & x = 0, y \ge 0 \\ \infty & \text{其他情况} \end{cases}\end{split}\]
参数:
x, yarray_like

实数参数

outndarray, 可选

函数结果的可选输出数组

返回:
标量或 ndarray

Kullback-Liebler 散度的值。

备注

在 0.15.0 版本中添加。

此函数是非负的,并且在 xy 中是联合凸的。

此函数的起源在于凸规划;有关详细信息,请参阅 [1]。这就是为什么该函数包含额外的 \(-x + y\) 项,这超出了 Kullback-Leibler 散度的预期。对于没有额外项的函数版本,请参阅 rel_entr

参考文献

[1]

Boyd, Stephen and Lieven Vandenberghe. Convex optimization. Cambridge University Press, 2004. DOI:https://doi.org/10.1017/CBO9780511804441