当我必须手动 运行 迭代时,Doc2Vec 和训练中的纪元是什么意思?
What does epochs mean in Doc2Vec and train when I have to manually run the iteration?
我试图理解 Doc2Vec
函数中的 epochs
参数和 train
函数中的 epochs
参数。
在下面的代码片段中,我手动设置了一个 4000 次迭代的循环。在 Doc2Vec 中是否需要或将 4000 作为 epochs 参数传递就足够了? Doc2Vec
中的 epochs
与 train
中的时期有何不同?
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))
此外,权重如何以及何时更新?
您不必手动 运行 迭代,并且您 不应该 多次调用 train()
除非您是专家出于非常具体的原因需要这样做的人。如果您在正在复制的某个在线示例中看到过此技术,则该示例可能已经过时且具有误导性。
调用 train()
一次,将您首选的传递次数作为 epochs
参数。
此外,不要使用开始时 alpha
较低的学习率 (0.001
) 然后上升到 min_alpha
25 倍的值 (0.025
) - 这不是应该的工作方式,大多数用户根本不需要调整 alpha
相关的默认值。 (同样,如果您是从某处的在线示例中获取此信息的 - 那是一个糟糕的示例。让他们知道他们给出了错误的建议。)
此外,4000 个训练周期大得离谱。在处理数万到数百万文档时,10-20 的值在已发表的作品中很常见。如果你的数据集较小,它可能无法很好地使用 Doc2Vec
,但有时更多的 epoch(或更小的 vector_size
)仍然可以从小数据中学到一些可泛化的东西——但仍然期望使用更接近几十个 epoch (不是数千)。
一个很好的介绍(尽管有一个很小的数据集几乎不能与 Doc2Vec
一起使用)是与 gensim 捆绑在一起的 doc2vec-lee.ipynb
Jupyter notebook,也可以在线查看:
https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb
祝你好运!
我试图理解 Doc2Vec
函数中的 epochs
参数和 train
函数中的 epochs
参数。
在下面的代码片段中,我手动设置了一个 4000 次迭代的循环。在 Doc2Vec 中是否需要或将 4000 作为 epochs 参数传递就足够了? Doc2Vec
中的 epochs
与 train
中的时期有何不同?
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))
此外,权重如何以及何时更新?
您不必手动 运行 迭代,并且您 不应该 多次调用 train()
除非您是专家出于非常具体的原因需要这样做的人。如果您在正在复制的某个在线示例中看到过此技术,则该示例可能已经过时且具有误导性。
调用 train()
一次,将您首选的传递次数作为 epochs
参数。
此外,不要使用开始时 alpha
较低的学习率 (0.001
) 然后上升到 min_alpha
25 倍的值 (0.025
) - 这不是应该的工作方式,大多数用户根本不需要调整 alpha
相关的默认值。 (同样,如果您是从某处的在线示例中获取此信息的 - 那是一个糟糕的示例。让他们知道他们给出了错误的建议。)
此外,4000 个训练周期大得离谱。在处理数万到数百万文档时,10-20 的值在已发表的作品中很常见。如果你的数据集较小,它可能无法很好地使用 Doc2Vec
,但有时更多的 epoch(或更小的 vector_size
)仍然可以从小数据中学到一些可泛化的东西——但仍然期望使用更接近几十个 epoch (不是数千)。
一个很好的介绍(尽管有一个很小的数据集几乎不能与 Doc2Vec
一起使用)是与 gensim 捆绑在一起的 doc2vec-lee.ipynb
Jupyter notebook,也可以在线查看:
https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb
祝你好运!