【发布时间】:2020-03-12 04:52:46
【问题描述】:
我正在尝试使用 Gibbs 采样实现 LDA,在更新每个主题比例的步骤中,我有一个 4 层循环,它运行得非常慢,我不知道如何提高这段代码的效率。我现在的代码如下:
N_W 是单词数,N_D 是文档数,Z[i,j] 是主题分配(1 到 K 个可能的分配),X[i,j] 是 j- 的计数第 i 个文档中的第 th 个单词,Beta[k,:] 的维度为 [K, N_W]。
更新如下:
for k in range(K): # iteratively for each topic update
n_k = np.zeros(N_W) # vocab size
for w in range(N_W):
for i in range(N_D):
for j in range(N_W):
# counting number of times a word is assigned to a topic
n_k[w] += (X[i,j] == w) and (Z[i,j] == k)
# update
Beta[k,:] = np.random.dirichlet(gamma + n_k)
【问题讨论】:
-
也许这个问题会给你一些启发stackoverflow.com/questions/39371021/…
-
X 和 Y 是 np.array 吗?
-
是的,这些矩阵是 np.array
标签: python vectorization data-manipulation lda