gpt4 book ai didi

machine-learning - 使用 scikit 的 LatentDirichletAllocation 类训练时评估模型

转载 作者:行者123 更新时间:2023-11-30 08:46:37 25 4
gpt4 key购买 nike

我正在尝试 LatentDirichletAllocation() class在 scikit-learn 中,evaluate_every 参数具有以下描述。

How often to evaluate perplexity. Only used in fit method. set it to 0 or negative number to not evalute perplexity in training at all. Evaluating perplexity can help you check convergence in training process, but it will also increase total training time. Evaluating perplexity in every iteration might increase training time up to two-fold.

我将此参数设置为 2(默认为 0)并发现训练时间增加,但我似乎无法在任何地方找到困惑度值。这些结果是否已保存,或者仅由模型用来确定何时停止?我希望使用困惑度值来衡量模型的进度和学习曲线。

最佳答案

根据 source,它与 perp_tol 参数结合使用来评估收敛性,并且在迭代之间不会保存。 :

for i in xrange(max_iter):

# ...

# check perplexity
if evaluate_every > 0 and (i + 1) % evaluate_every == 0:
doc_topics_distr, _ = self._e_step(X, cal_sstats=False,
random_init=False,
parallel=parallel)
bound = self.perplexity(X, doc_topics_distr,
sub_sampling=False)
if self.verbose:
print('iteration: %d, perplexity: %.4f'
% (i + 1, bound))

if last_bound and abs(last_bound - bound) < self.perp_tol:
break
last_bound = bound
self.n_iter_ += 1

请注意,您可以通过 (1) 将行 self.saved_bounds = [] 添加到 __init__ 方法 (2) 轻松地调整现有源来执行此操作在上面添加 self.bounds.append(bound) ,如下所示:

if last_bound and abs(last_bound - bound) < self.perp_tol:
break
last_bound = bound
self.bounds.append(bound)

根据您保存更新类的位置,您还必须调整文件顶部的导入以引用 scikit-learn 中的完整模块路径。

关于machine-learning - 使用 scikit 的 LatentDirichletAllocation 类训练时评估模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41616408/

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