首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Huggingface gpt2语言模型代码中,困惑在哪里计算?

在Huggingface gpt2语言模型代码中,困惑在哪里计算?
EN

Stack Overflow用户
提问于 2020-03-24 13:58:05
回答 2查看 5.2K关注 0票数 6

我看到一些github评论说,模型()调用的损失的输出以困惑的形式出现:https://github.com/huggingface/transformers/issues/473

但当我看相关代码时..。https://huggingface.co/transformers/_modules/transformers/modeling_openai.html#OpenAIGPTLMHeadModel.forward

代码语言:javascript
运行
复制
    if labels is not None:
        # Shift so that tokens < n predict n
        shift_logits = lm_logits[..., :-1, :].contiguous()
        shift_labels = labels[..., 1:].contiguous()
        # Flatten the tokens
        loss_fct = CrossEntropyLoss()
        loss = loss_fct(shift_logits.view(-1, shift_logits.size(-1)), shift_labels.view(-1))
        outputs = (loss,) + outputs

    return outputs  # (loss), lm_logits, (all hidden states), (all attentions)

我看到交叉熵正在计算,但没有转化为困惑。损失最终会在哪里改变呢?还是已经有了我不理解的转变?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-24 15:33:41

好吧,我找到答案了。代码实际上是返回交叉熵。在github评论中,他们说是perplexity...they,因为OP说

代码语言:javascript
运行
复制
return math.exp(loss)

它将熵转化为困惑:)

票数 8
EN

Stack Overflow用户

发布于 2022-03-02 13:33:56

没有乳胶没问题。顾名思义,困惑(三元组)是:

PP(p) = e^(H(p))

其中H代表混沌(古希腊语:χάος)或熵。在一般情况下,我们有交叉熵:

PP(p) = e^(H(p,q))

E是对数的自然基,这是PyTorch倾向于计算熵和交叉熵的方法。

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

https://stackoverflow.com/questions/60832547

复制
相关文章

相似问题

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