首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有LM头部的GPT2Model和GPT2Model具有不同的注意重量维度

具有LM头部的GPT2Model和GPT2Model具有不同的注意重量维度
EN

Stack Overflow用户
提问于 2020-03-11 03:11:48
回答 1查看 208关注 0票数 0
代码语言:javascript
复制
>>> from transformers import GPT2Tokenizer, GPT2Model
>>> model = GPT2Model.from_pretrained("gpt2",output_attentions=True)
>>> tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
>>> text = "a,b,c"
>>> inputs = tokenizer.encode_plus(text,return_tensors='pt',add_special_tokens=True)
>>> input_ids = inputs['input_ids']
>>> attention = model(input_ids)[-1]
>>> attention[0].shape
torch.Size([1, 12, 5, 5])
>>> import transformers
>>> m2 = transformers.AutoModelWithLMHead.from_pretrained("gpt2")
>>> at2 = m2(input_ids)[-1]
>>> at2[0].shape
torch.Size([2, 1, 12, 5, 64])

作为参考,attention是一个元组,attention[0]是它的第一层。

我可以在torch.Size([2, 1, 12, 5, 64])torch.Size([1, 12, 5, 5])中映射除2之外的所有内容。2是什么意思?

我从bertviz github存储库获得以下定义:

代码语言:javascript
复制
            attention: list of ``torch.FloatTensor``(one for each layer) of shape
                ``(batch_size(must be 1), num_heads, sequence_length, sequence_length)``
EN

回答 1

Stack Overflow用户

发布于 2020-03-11 04:28:53

代码语言:javascript
复制
>>> m3 = m2.from_pretrained("gpt2",output_attentions=True)
>>> m3(inputs)[-1][0].shape
torch.Size([1, 12, 5, 5])

奇怪的是,transformers.AutoModelWithLMHead.from_pretrained不允许output_attentions成为其args之一。

此外,在运行时编辑配置不起作用(m2.config.output_attentions = True不起作用)。

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

https://stackoverflow.com/questions/60624441

复制
相关文章

相似问题

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