无法将 tqdm 应用于 LDA 模型来跟踪训练进度

问题描述 投票:0回答:2

我目前正在使用 Jupyter Notebook 进行实验,以找到实现 LDA 算法的最佳主题模型;但是我想要一个进度条来了解每个实验的剩余训练时间。我读到

tqdm()
是最好的选择,但我正在努力实现此功能。

到目前为止,我尝试的是包装

corpus
以将其作为可迭代对象传递,但尽管它确实生成了一个快速填充到 100% 的进度条,但在进度条完全填满后,训练仍在继续。 我认为这种行为与以下事实有关:
tqdm
的文档始终表明它是在这样的 for 循环中实现的:

from tqdm import tqdm

for i in tqdm.trange(100):
    pass

但我就是不知道如何与

LdaModel()

协调一致

这是我的代码:

num_topics = 2
chunksize = 2000
passes = 20
iterations = 10
eval_every = 
random_state=100
alpha= 1 
per_word_topics=True
minimum_phi_value=0.001

#Training the model
from tqdm import tqdm

lda_model = LdaModel(
corpus=tqdm(corpus),
id2word=dictionary,
chunksize=chunksize,
alpha=alpha,
eta='auto',
minimum_probability=0.001,
iterations=iterations,
num_topics=num_topics,
passes=passes,
random_state=random_state,
per_word_topics=per_word_topics,
minimum_phi_value = minimum_phi_value,
eval_every=eval_every)

print("LDA TOPICS baby! >>>>")

#parameters for show_topics
log=True 
num_words=5
print(lda_model.show_topics(num_words=num_words,log=log )) 

如果您能为我提供任何帮助,我将不胜感激。

progress-bar lda tqdm
2个回答
1
投票

在 ldamodel.py 中(在我的版本中,def update() 在第 950 行左右),您可以使用 tqdm 来包装循环以获取传递次数。在 (range(passes)) 中搜索 pass_,并使用 tqdm 函数换行。

from tqdm import tqdm
for pass_ in tqdm(range(passes)):

0
投票
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.utils.extmath import randomized_svd
from tqdm import tqdm
import numpy as np

n_components = 12
n_iter = 10  

lda_model = LatentDirichletAllocation(
    n_components=n_components,
    max_iter=1,  # We'll manually control iterations
    random_state=42,
    learning_method='online'
)

progress_bar = tqdm(total=n_iter, desc="LDA Training Progress")

for _ in range(n_iter):
    lda_model.partial_fit(count_data)  
    progress_bar.update(1)

progress_bar.close()

lda_topics = lda_model.components_
lda_feature_names = count_vectorizer.get_feature_names_out()

for topic_idx, topic in enumerate(lda_topics):
    print(f"Topic {topic_idx}:")
    print(" ".join([lda_feature_names[i] for i in topic.argsort()[-10:]]))
© www.soinside.com 2019 - 2024. All rights reserved.