【问题标题】:Doc2Vec: Do we need to train model with utils.shuffle?Doc2Vec:我们需要用 utils.shuffle 训练模型吗?
【发布时间】:2021-10-28 12:35:00
【问题描述】:

我是 NLP 和 Doc2Vec 的新手。我注意到一些网站通过洗牌每个时期的训练数据(选项 1)来训练 Doc2Vec,而一些网站使用选项 2。在选项 2 中,没有对训练数据进行洗牌

有什么区别?另外我如何选择最佳的阿尔法?谢谢

### Option 1 ###

for epoch in range(30):
    model_dbow.train(utils.shuffle([x for x in tqdm(train_tagged.values)]), total_examples=len(train_tagged.values), epochs=1)
    model_dbow.alpha -= 0.002
    model_dbow.min_alpha = model_dbow.alpha

### Option 2 ###
model_dbow.train(train_tagged.values, total_examples=len(train_tagged.values), epochs=30)

【问题讨论】:

    标签: doc2vec


    【解决方案1】:

    如果您的语料库可能在早期文档和晚期文档之间有一些主要的字符差异 - 例如某些单词/主题都提前加载到早期文档中,或者全部后加载到后面的文档中 - 然后执行一次 shuffle预先消除任何此类模式可能会有所帮助。这不是绝对必要的,它对最终结果的影响可能很小。

    在每个训练通道之间重新洗牌并不常见,我不希望它提供可检测的好处来证明其成本/代码复杂性是合理的。

    关于您的“选项 1”与“选项 2”:Don't call train() multiple times in your own loop,除非您是一位确切知道为什么要这样做的专家。 (并且:任何表明这通常是一个糟糕/错误的在线示例。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 2018-07-31
      • 1970-01-01
      • 2018-12-10
      相关资源
      最近更新 更多