gpt4 book ai didi

python - 不同长度的numpy数组的KL分歧

转载 作者:行者123 更新时间:2023-11-28 18:37:49 25 4
gpt4 key购买 nike

我正在为两个不同的 numpy 数组使用 KL-divergence ([ http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.stats.entropy.html]) 的 SciPy 实现。

第一个,假设 “base_freq” 的标准长度为 2000第二个,“test_freq” 长度可以根据样本取不同的值。所以假设它的长度是 8000。

当这两个长度不同时,如何计算 KL 散度???

我的想法是将第二个数组 ("test_freq") 分解为多个长度为 2000 的数组。但是这是怎么做到的??当“test_freq” 获得长度为 250 的样本时会发生什么?

最佳答案

我应该先声明我不是信息论专家。对于我使用 KL-divergence 的一个应用程序,我正在按像素比较两个图像以计算丢失的位数。如果图像有不同的大小,您提出的方法将要求我为较小图像中的每个像素选择较大图像中的相应像素——而不是任何旧像素。我的理解是,只有在比较以相同方式(即相同的时间或空间采样间隔)采样的两个信号时,KL 散度才有意义。

如果你想按照你的建议去做,你可以使用numpy.random.choice:

import numpy as np

def uneven_kl_divergence(pk,qk):
if len(pk)>len(qk):
pk = np.random.choice(pk,len(qk))
elif len(qk)>len(pk):
qk = np.random.choice(qk,len(pk))
return np.sum(pk * np.log(pk/qk))

关于python - 不同长度的numpy数组的KL分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30742755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com