首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gensim构建的doc2vec模型的GridSearch

使用gensim构建的doc2vec模型的GridSearch
EN

Stack Overflow用户
提问于 2018-10-18 22:12:45
回答 1查看 1.5K关注 0票数 1

我正在尝试为我训练过的doc2vec gensim模型找到最佳超参数,该模型将文档作为输入并创建其文档嵌入。我的训练数据由文本文档组成,但没有任何标签。也就是说,我只有“x”,没有“y”。

我在这里发现了一些与我正在尝试做的事情相关的问题,但所有的解决方案都是针对有监督的模型提出的,但没有一个像我的那样针对无监督模型。

下面是我训练doc2vec模型的代码:

代码语言:javascript
复制
def train_doc2vec(
    self,
    X: List[List[str]],
    epochs: int=10,
    learning_rate: float=0.0002) -> gensim.models.doc2vec:

    tagged_documents = list()

    for idx, w in enumerate(X):
        td = TaggedDocument(to_unicode(str.encode(' '.join(w))).split(), [str(idx)])
        tagged_documents.append(td)

    model = Doc2Vec(**self.params_doc2vec)
    model.build_vocab(tagged_documents)

    for epoch in range(epochs):
        model.train(tagged_documents,
                    total_examples=model.corpus_count,
                    epochs=model.epochs)
        # decrease the learning rate
        model.alpha -= learning_rate
        # fix the learning rate, no decay
        model.min_alpha = model.alpha

    return model

我需要关于如何使用GridSearch为我训练的模型找到最佳超参数的建议,或者任何关于其他技术的建议。非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-10-23 16:00:52

独立于代码的正确性,我将尝试回答您关于如何执行超参数调优的问题。您必须开始定义一组超参数,它们将定义您的超参数网格搜索。对于每组超参数

Hset1=(par1Value1,par2Value1,...,par3Value1)

你在训练集上训练你的模型,并使用一个独立的验证集来测量你的准确性(或者你想使用的任何指标)。您可以存储此值(例如A_Hset1)。当您对所有可能的超参数集执行此操作时,您将拥有一组度量

(A_Hset1,A_Hset2,A_Hset3...A_HsetK)

这些度量中的每一个都会告诉你,对于每组超参数,你的模型有多好,所以你的一组最优超参数

H_setOptimal= HsetX | A_setX=max(A_Hset1,A_Hset2,A_Hset3...A_HsetK)

为了进行公平的比较,您应该始终在相同的数据上训练模型,并始终使用相同的验证集。

我不是一个高级的Python用户,所以你可能会找到更好的建议,但我要做的是创建一个字典列表,其中每个字典都包含一组要测试的超参数:

代码语言:javascript
复制
grid_search=[{"par1":"val1","par2":"val1","par3":"val1",..., "res"=""},
             {"par1":"val2","par2":"val1","par3":"val1",..., "res"=""},
             {"par1":"val3","par2":"val1","par3":"val1",..., "res"=""},
             ,...,
             {"par1":"valn","par2":"valn","par3":"valn",..., "res"=""}]

这样您就可以将结果存储在相应字典的"res“字段中,并跟踪每组参数的性能。

代码语言:javascript
复制
for set in grid_search:
  #insert here your training and accuracy evaluation using the
  #parameters in set
  
  set["res"]= the_Accuracy_for_HyperPar_in_set

我希望它能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52876014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档