阅读Doc2Vec documentation of gensim时,我对某些选项感到有些困惑。例如,Doc2Vec的构造函数有一个参数 iter :
iter(int) - 语料库上的迭代次数(epochs)。
为什么列车方法也有一个类似的参数叫做 epochs ?
epochs(int) - 语料库上的迭代次数(epochs)。
两者有什么区别?在文档中还有一个段落:
避免模型执行多重操作的常见错误 训练通过自己,必须提供明确的时代论证。 在常见和推荐的情况下,train()只调用一次, 模型的缓存iter值应作为epochs值提供。
但我真的不明白为什么构造函数需要一个 iter 参数以及应该为它提供什么。
修改:
我刚看到也有可能直接在构造函数中指定语料库而不是单独调用train()。所以我认为在这种情况下, iter 将被使用,否则 epochs 。这是对的吗?
如果是这样,在构造函数中指定语料库和手动调用train()之间有什么区别?为什么会选择其中一个?
编辑2 :
虽然文档中未提及,但 iter 现已作为Doc2Vec的参数折旧。它被重命名为 epochs 以与 train()的参数一致。培训似乎与此有关,尽管我在与MemoryErrors进行斗争。
答案 0 :(得分:1)
构造函数中的参数最初称为iter
,当通过单个构造函数调用执行所有操作时 - 在构造函数中提供语料库 - 该值将仅用作训练传递的数量。
当train()
的参数被扩展并强制执行以避免常见错误时,epochs
这个词被选为更具描述性的,与iter
值不同。
在构造函数中指定语料库时,将自动为您调用build_vocab()
和train()
,作为构造的一部分。对于大多数简单的用途,这没关系。
但是,如果你让这些自动调用发生,你就失去了分开计时的机会,或者在开始训练之前篡改词汇步骤的结果,或者多次调用train()
(这通常是一个坏主意,除非你确定你知道你在做什么)。