当我必须手动运行迭代时,在Doc2Vec和train中,epoch意味着什么?

2024-10-01 15:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解Doc2Vec函数中的epochs参数和train函数中的epochs参数。在

在下面的代码片段中,我手动设置了一个4000次迭代的循环。Doc2Vec是否需要或通过4000作为epochs参数?还有Doc2Vec中的epochstrain中的时代有何不同?在

documents = Documents(train_set)

model = Doc2Vec(vector_size=100, dbow_words=1, dm=0, epochs=4000,  window=5,
                seed=1337, min_count=5, workers=4, alpha=0.001, min_alpha=0.025)

model.build_vocab(documents)

for epoch in range(model.epochs):
    print("epoch "+str(epoch))
    model.train(documents, total_examples=total_length, epochs=1)
    ckpnt = model_name+"_epoch_"+str(epoch)
    model.save(ckpnt)
    print("Saving {}".format(ckpnt))

另外,权重是如何和何时更新的?在


Tags: 函数代码alpha参数modeltrainmindocuments
1条回答
网友
1楼 · 发布于 2024-10-01 15:42:31

您不必手动运行迭代,而且您不应该多次调用train(),除非您是一位出于非常特定原因需要这样做的专家。如果你在你复制的一些在线例子中看到了这种技术,那么这个例子很可能已经过时,而且容易引起误解。在

调用train()一次,使用您首选的传递次数作为epochs参数。在

另外,不要使用一个初始的alpha学习率很低(0.001),然后上升到一个25倍大的min_alpha值,这不是正常的工作方式,大多数用户根本不需要调整alpha相关的默认值。(再说一次,如果你是从某个地方的在线例子中得到的,那就是一个糟糕的例子。让他们知道他们的建议不好。)

而且,4000个训练时间段是荒谬的大。当处理数万到数百万个文档时,10-20的值在已发表的作品中很常见。如果您的数据集较小,它可能无法很好地与Doc2Vec配合使用,但有时更多的时代(或更小的vector_size)仍然可以从微小的数据中学习到一些可概括的东西,但仍然希望使用更接近几十个时代(而不是数千个)。在

一个很好的介绍(尽管有一个很小的数据集,几乎不能与Doc2Vec一起使用)是与gensim捆绑在一起的doc2vec-lee.ipynbJupyter笔记本,也可以在以下网站在线查看:

https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb

祝你好运!在

相关问题 更多 >

    热门问题