gpt4 book ai didi

python - 什么是 doc2vec 训练迭代?

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:34 26 4
gpt4 key购买 nike

我是 doc2vec 的新手。我最初试图理解 doc2vec,下面提到的是我使用 Gensim 的代码。如我所愿,我得到了两个文档的训练模型和文档向量。

但是,我想知道在几个 epoches 中重新训练模型的好处以及如何在 Gensim 中进行?我们可以使用 iteralpha 参数来完成它,还是我们必须在单独的 for 循环 中训练它?请告诉我应该如何更改以下代码来训练模型 20 个时期。

另外,我很想知道 word2vec 模型也需要多次训练迭代。

# Import libraries
from gensim.models import doc2vec
from collections import namedtuple

# Load data
doc1 = ["This is a sentence", "This is another sentence"]

# Transform data
docs = []
analyzedDocument = namedtuple('AnalyzedDocument', 'words tags')
for i, text in enumerate(doc1):
words = text.lower().split()
tags = [i]
docs.append(analyzedDocument(words, tags))

# Train model
model = doc2vec.Doc2Vec(docs, size = 100, window = 300, min_count = 1, workers = 4)

# Get the vectors
model.docvecs[0]
model.docvecs[1]

最佳答案

Word2Vec 和相关算法(如“段落向量”又名 Doc2Vec)通常对文本语料库进行多次训练。

Gensim 的 Word2Vec/Doc2Vec 允许通过 iter 参数指定遍数,如果您还提供语料库对象初始化以触发立即训练。 (您上面的代码通过向 Doc2Vec(docs, ...) 构造函数调用提供 docs 来做到这一点。)

如果未指定,则 gensim 使用的默认 iter 值为 5,以匹配 Google 原始 word2vec.c 版本使用的默认值。所以你上面的代码已经使用了 5 次训练。

已发布的 Doc2Vec 工作通常使用 10-20 遍。如果您想改为执行 20 次传递,则可以将 Doc2Vec 初始化更改为:

model = doc2vec.Doc2Vec(docs, iter=20, ...)

因为 Doc2Vec 通常为每个文档使用唯一的标识符标签,所以更多的迭代可能更重要,因此每个文档向量在训练过程中多次出现用于训练,作为模型逐渐好转。另一方面,由于 Word2Vec 语料库中的词可能出现在整个语料库的任何地方,每个词的关联向量将随着模型的改进在过程的早期、中期和后期进行多次调整——甚至只需一次通过。 (因此,对于一个巨大的、变化多端的 Word2Vec 语料库,使用少于默认次数的遍数是可以想象的。)

不需要执行自己的循环,大多数用户也不应该这样做。如果您自己管理单独的 build_vocab()train() 步骤,而不是在初始化程序中提供 docs 语料库这样更简单的步骤调用以触发即时训练,那么您必须向 train() 提供一个 epochs 参数——它会执行该次数的传递,因此您仍然只需要调用一次 火车()

关于python - 什么是 doc2vec 训练迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46807010/

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