我想实现 KL 散度,我想使用 P(x) 作为参考分布,我想用它来比较我的模型的分布。如何从参考分布 P(x) 中获取直方图?
def P(x):
return ((32/(math.pi)**2)*(x)**2*np.exp(-(4/math.pi)*(x)**2))
x = np.array([0,0,0,0,0,3,3,2,2,2,1,1,1,1,])
fig = plt.figure()
ax = fig.add_subplot(111)
n,bins,patches = ax.hist(x,bins=10,density=True)
为了计算 KL 散度,我定义了函数
def KL(p,q):
KL_list =[]
for i in range(p):
val= p*np.log(q /p)
KL_list.append(val)
KL_list=-1*np.sum(np.array(KL_list))
return KL_list
现在为了调用函数 KL(p,q) 我必须定义 p 和 q 那么在我的情况下 p 和 q 的值是多少?