簡體   English   中英

矩陣的所有行對之間的向量化 KL 散度計算

[英]Vectorized KL divergence calculation between all pairs of rows of a matrix

我想找出矩陣的所有行對之間的 KL 散度。 為了解釋,我們假設有一個形狀為N x K的矩陣V 現在我想創建一個維度為N x N的矩陣L ,其中每個元素L[i,j] = KL(V[i,:],V[j,:]) 到目前為止,我已經使用以下scipy.stats.entropy來計算

upper_triangle = [entropy(V[i,:],V[j,:]) for (i,j) in itertools.combinations(range(N,2)]
lower_triangle = [entropy(V[j,:],V[i,:]) for (i,j) in itertools.combinations(range(N,2)]

L = np.zeroes((N,N))

L[np.triu_indices(N,k = 1)] = upper_triangle
L[np.tril_indices(N,k = -1)] = lower_triangle

有沒有更聰明的方法?

好的,在稍微按摩一下 KL 散度的方程之后,下面的方程也應該起作用,當然,它的幅度更快,

kl = np.dot(V, np.log(Vc).T)
right = kl + kl.T
left = np.tile(np.diag(kl),(kl.shape[0],1))
left = left + left.T
L = left - right

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM