我发现两个正态分布之间的理论KL散度值由下式给出:
当我尝试获取一些样本数据的值时,我得到的值接近17,理论值为200。
这是什么原因?
我的理论代码:
x_num_points = 1000000 ; y_num_points = 1000000 ; num_bins = 100
nu1 = 0.0 ; sigma1 = 1.0 ; nu2 = 20.0 ; sigma2 = 1.0
np.random.seed(0)
x = np.random.normal(loc = nu1, scale = sigma1, size = x_num_points)
np.random.seed(1)
y = np.random.normal(loc = nu2, scale = sigma2, size = y_num_points)
theo_kl = np.log(sigma2/sigma1) + (sigma1**2 + (nu1 - nu2)**2)/(2*sigma2**2) - 1/2