【问题标题】:SpaCy-transformers regression outputSpaCy-transformers 回归输出
【发布时间】:2020-03-19 14:17:30
【问题描述】:

我想要回归输出而不是分类。例如:我想要一个从 0 到 1 的浮点输出值,而不是 n 个类。

这是来自包 github 页面的简约示例:

    import spacy
    from spacy.util import minibatch
    import random
    import torch

    is_using_gpu = spacy.prefer_gpu()
    if is_using_gpu:
        torch.set_default_tensor_type("torch.cuda.FloatTensor")

    nlp = spacy.load("en_trf_bertbaseuncased_lg")
    print(nlp.pipe_names) # ["sentencizer", "trf_wordpiecer", "trf_tok2vec"]
    textcat = nlp.create_pipe("trf_textcat", config={"exclusive_classes": True})
    for label in ("POSITIVE", "NEGATIVE"):
        textcat.add_label(label)
    nlp.add_pipe(textcat)

    optimizer = nlp.resume_training()
    for i in range(10):
        random.shuffle(TRAIN_DATA)
        losses = {}
        for batch in minibatch(TRAIN_DATA, size=8):
            texts, cats = zip(*batch)
            nlp.update(texts, cats, sgd=optimizer, losses=losses)
        print(i, losses)
    nlp.to_disk("/bert-textcat")

有没有一种简单的方法可以让trf_textcat 作为回归器工作?还是意味着扩展图书馆?

【问题讨论】:

  • 作为regressor工作你的意思是有概率是正的还是负的而不是类?还是别的什么?
  • @Claudio 我的意思是连续输出值而不是分类。

标签: machine-learning pytorch spacy spacy-transformers


【解决方案1】:

我想出了一个解决方法:从 nlp 管道中提取向量表示为:

vector_repres = nlp('Test text').vector

对所有文本条目执行此操作后,您最终会得到文本的固定维度表示。假设您有连续的输出值,请随意使用任何估计器,包括具有线性输出的神经网络。

请注意,向量表示是文本中所有单词的向量嵌入的平均值 - 对于您的情况,它可能不是最佳解决方案。

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 2018-08-29
    • 2020-01-24
    • 2021-05-25
    • 1970-01-01
    • 2022-01-12
    • 2016-02-28
    • 2018-01-16
    • 2020-08-18
    相关资源
    最近更新 更多