Transformers 4.37 中文文档(四十)(5)https://developer.aliyun.com/article/1564997
class transformers.models.longformer.modeling_tf_longformer.TFLongformerQuestionAnsweringModelOutput
( loss: tf.Tensor | None = None start_logits: tf.Tensor = None end_logits: tf.Tensor = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None global_attentions: Tuple[tf.Tensor] | None = None )
参数
loss
(形状为(1,)
的tf.Tensor
,可选,在提供labels
时返回)- 总跨度提取损失是起始位置和结束位置的交叉熵之和。start_logits
(tf.Tensor
of shape(batch_size, sequence_length)
) — 跨度开始得分(SoftMax 之前)。end_logits
(tf.Tensor
of shape(batch_size, sequence_length)
) — 跨度结束得分(SoftMax 之前)。hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 + 一个用于每一层的输出)。
模型在每一层输出的隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, x + attention_window + 1)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的令牌数。在注意力 SoftMax 之后的局部注意力权重,用于计算自注意力头中的加权平均值。这些是来自序列中每个令牌到具有全局注意力的每个令牌(前x
个值)和到注意力窗口中的每个令牌(剩余attention_window
个值)的注意力权重。
- 1
值)。请注意,前
x个值是指文本中具有固定位置的令牌,但剩余的
attention_window + 1个值是指具有相对位置的令牌:令牌对自身的注意力权重位于索引
x + attention_window / 2,前(后)
attention_window / 2个值是对前(后)
attention_window / 2个令牌的注意力权重。如果注意力窗口包含具有全局注意力的令牌,则相应索引处的注意力权重设置为 0;该值应从前
x个注意力权重中访问。如果一个令牌具有全局注意力,则对
attentions中的所有其他令牌的注意力权重设置为 0,应从
global_attentions`中访问这些值。
global_attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, x)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的令牌数。
在注意力 SoftMax 之后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是来自具有全局注意力的每个令牌到序列中每个令牌的注意力权重。
用于问答 Longformer 模型输出的基类。
class transformers.models.longformer.modeling_tf_longformer.TFLongformerSequenceClassifierOutput
( loss: tf.Tensor | None = None logits: tf.Tensor = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None global_attentions: Tuple[tf.Tensor] | None = None )
参数
loss
(tf.Tensor
of shape(1,)
,可选,当提供labels
时返回) — 分类(如果 config.num_labels==1 则为回归)损失。logits
(tf.Tensor
of shape(batch_size, config.num_labels)
) — 分类(如果 config.num_labels==1 则为回归)得分(SoftMax 之前)。hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 + 一个用于每一层的输出)。
模型在每一层输出的隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, x + attention_window + 1)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的令牌数。在注意力 softmax 之后的局部注意力权重,用于计算自注意力头中的加权平均值。这些是来自序列中每个令牌到具有全局注意力的每个令牌(前x
个值)和到注意力窗口中的每个令牌的注意力权重。
- 1
值)。请注意,前
x个值是指文本中具有固定位置的令牌,但剩余的
attention_window + 1值是指具有相对位置的令牌:令牌对自身的注意力权重位于索引
x + attention_window / 2,前(后)
attention_window / 2个值是对前(后)
attention_window / 2个令牌的注意力权重。如果注意力窗口包含具有全局注意力的令牌,则相应索引处的注意力权重设置为 0;值应从前
x个注意力权重中访问。如果一个令牌具有全局注意力,则对
attentions中的所有其他令牌的注意力权重设置为 0,值应从
global_attentions`中访问。
global_attentions
(tuple(tf.Tensor)
, 可选的, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, x)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的令牌数量。
在注意力 softmax 之后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是来自每个令牌的全局注意力到序列中每个令牌的注意力权重。
句子分类模型输出的基类。
class transformers.models.longformer.modeling_tf_longformer.TFLongformerMultipleChoiceModelOutput
( loss: tf.Tensor | None = None logits: tf.Tensor = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None global_attentions: Tuple[tf.Tensor] | None = None )
参数
loss
(tf.Tensor
,形状为*(1,)*,可选的,当提供labels
时返回) — 分类损失。logits
(tf.Tensor
,形状为(batch_size, num_choices)
) — num_choices是输入张量的第二维度。(参见上面的input_ids)。
分类得分(SoftMax 之前)。hidden_states
(tuple(tf.Tensor)
, 可选的, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 + 一个用于每层的输出)。
模型在每一层输出的隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
, 可选的, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, x + attention_window + 1)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的令牌数量。在注意力 softmax 之后的局部注意力权重,用于计算自注意力头中的加权平均值。这些是来自序列中每个令牌到具有全局注意力的每个令牌(前x
个值)和到注意力窗口中的每个令牌的注意力权重。
- 1
值)。请注意,前
x个值是指文本中具有固定位置的令牌,但剩余的
attention_window + 1值是指具有相对位置的令牌:令牌对自身的注意力权重位于索引
x + attention_window / 2,前(后)
attention_window / 2个值是对前(后)
attention_window / 2个令牌的注意力权重。如果注意力窗口包含具有全局注意力的令牌,则相应索引处的注意力权重设置为 0;值应从前
x个注意力权重中访问。如果一个令牌具有全局注意力,则对
attentions中的所有其他令牌的注意力权重设置为 0,值应从
global_attentions`中访问。
global_attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, x)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的标记数。
在注意力 softmax 之后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记到序列中每个标记的注意力权重。
多选模型输出的基类。
class transformers.models.longformer.modeling_tf_longformer.TFLongformerTokenClassifierOutput
( loss: tf.Tensor | None = None logits: tf.Tensor = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None global_attentions: Tuple[tf.Tensor] | None = None )
参数
loss
(形状为(1,)
的tf.Tensor
,可选,当提供labels
时返回)— 分类损失。logits
(形状为(batch_size, sequence_length, config.num_labels)
的tf.Tensor
)— 分类分数(SoftMax 之前)。hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(嵌入输出的一个和每层输出的一个)。
每层输出的模型隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, x + attention_window + 1)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的标记数。在注意力 softmax 之后的局部注意力权重,用于计算自注意力头中的加权平均值。这些是序列中每个标记到具有全局注意力的每个标记(前x
个值)和到注意力窗口中的每个标记(剩余attention_window
个值)的注意力权重。
- 1
values)。请注意,前
x个值是指文本中固定位置的标记,但剩余的
attention_window + 1个值是指相对位置的标记:标记自身的注意力权重位于索引
x + attention_window / 2,前(后)的
attention_window / 2个值是指前(后)的标记的注意力权重。如果注意力窗口包含具有全局注意力的标记,则相应索引处的注意力权重设置为 0;该值应从前
x个注意力权重中访问。如果一个标记具有全局注意力,则
attentions中对所有其他标记的注意力权重设置为 0,应从
global_attentions`中访问这些值。
global_attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, x)
的tf.Tensor
元组(每层一个),其中x
是具有全局注意力掩码的标记数。
在注意力 softmax 之后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记到序列中每个标记的注意力权重。
标记分类模型输出的基类。
Pytorch 隐藏 Pytorch 内容
LongformerModel
class transformers.LongformerModel
( config add_pooling_layer = True )
参数
config
(LongformerConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 Longformer 模型输出原始隐藏状态,没有特定的头部。
这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是 PyTorch torch.nn.Module 的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
这个类从 RobertaModel 复制了代码,并用 Longformer 自注意力覆盖了标准的自注意力,以提供处理长序列的能力,遵循Longformer: 长文档 Transformer中描述的自注意力方法,作者是 Iz Beltagy、Matthew E. Peters 和 Arman Cohan。Longformer 自注意力结合了局部(滑动窗口)和全局注意力,以扩展到长文档,而不会导致内存和计算的 O(n²) 增加。
这里实现的自注意力模块LongformerSelfAttention
支持局部和全局注意力的组合,但不支持自回归注意力和扩张注意力。自回归和扩张注意力对于自回归语言建模比微调下游任务更相关。未来的版本将添加对自回归注意力的支持,但对扩张注意力的支持需要自定义 CUDA 内核以提高内存和计算效率。
forward
( input_ids: Optional = None attention_mask: Optional = None global_attention_mask: Optional = None head_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.longformer.modeling_longformer.LongformerBaseModelOutputWithPooling or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
) — 输入序列标记在词汇表中的索引。
可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。
什么是输入 ID?attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间。
- 1 代表
未被掩盖
的标记, - 0 代表
被掩盖
的标记。
- 什么是注意力掩码?
global_attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选) — 决定每个标记上的注意力分配,局部注意力或全局注意力。具有全局注意力的标记会关注所有其他标记,而所有其他标记也会关注它们。这对于任务特定的微调很重要,因为它使模型在表示任务时更加灵活。例如,对于分类,应该给予该标记全局注意力。对于问答,所有问题标记也应该具有全局注意力。请参考Longformer 论文获取更多细节。掩码值选在[0, 1]
之间:
- 0 代表局部注意力(滑动窗口注意力),
- 1 表示全局注意力(关注所有其他标记,所有其他标记也关注它们)。
head_mask
(torch.Tensor
of shape(num_layers, num_heads)
, optional) — 在编码器中,用于使注意力模块的特定头部失效的掩码。掩码值在[0, 1]
中选择:
- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
decoder_head_mask
(torch.Tensor
of shape(num_layers, num_heads)
, optional) — 在解码器中,用于使注意力模块的特定头部失效的掩码。掩码值在[0, 1]
中选择:
- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
token_type_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 段落标记索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:
- 0 对应于 句子 A 的标记,
- 1 对应于 句子 B 的标记。
- 什么是标记类型 ID?
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.longformer.modeling_longformer.LongformerBaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
一个 transformers.models.longformer.modeling_longformer.LongformerBaseModelOutputWithPooling 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含根据配置(LongformerConfig)和输入的不同元素。
last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列的输出。pooler_output
(torch.FloatTensor
of shape(batch_size, hidden_size)
) — 序列第一个标记(分类标记)的最后一层隐藏状态,进一步由线性层和 Tanh 激活函数处理。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 + 一个用于每一层的输出)。
模型在每一层的输出的隐藏状态加上初始嵌入输出。attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, x + attention_window + 1)
的torch.FloatTensor
元组(每层一个),其中x
是具有全局注意力掩码的标记数。在注意力 softmax 之后的局部注意力权重,用于计算自注意力头中的加权平均值。这些是从序列中的每个标记到具有全局注意力的每个标记(前x
个值)和到注意力窗口中的每个标记(剩余的attention_window
)的注意力权重。
- 1
values)。注意,前
x个值是指文本中具有固定位置的标记,但剩余的
attention_window + 1个值是指具有相对位置的标记:标记到自身的注意力权重位于索引
x + attention_window / 2处,前(后)的
attention_window / 2个值是指到前(后)的
attention_window / 2个标记的注意力权重。如果注意力窗口包含具有全局注意力的标记,则相应索引处的注意力权重设置为 0;该值应从前
x个注意力权重中访问。如果一个标记具有全局注意力,则到
attentions中的所有其他标记的注意力权重设置为 0,应从
global_attentions`中访问这些值。
global_attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, x)
的torch.FloatTensor
元组(每层一个),其中x
是具有全局注意力掩码的标记数。
在注意力 softmax 之后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是具有全局注意力的每个标记到序列中的每个标记的注意力权重。
LongformerModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> import torch >>> from transformers import LongformerModel, AutoTokenizer >>> model = LongformerModel.from_pretrained("allenai/longformer-base-4096") >>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096") >>> SAMPLE_TEXT = " ".join(["Hello world! "] * 1000) # long input document >>> input_ids = torch.tensor(tokenizer.encode(SAMPLE_TEXT)).unsqueeze(0) # batch of size 1 >>> attention_mask = torch.ones( ... input_ids.shape, dtype=torch.long, device=input_ids.device ... ) # initialize to local attention >>> global_attention_mask = torch.zeros( ... input_ids.shape, dtype=torch.long, device=input_ids.device ... ) # initialize to global attention to be deactivated for all tokens >>> global_attention_mask[ ... :, ... [ ... 1, ... 4, ... 21, ... ], ... ] = 1 # Set global attention to random tokens for the sake of this example >>> # Usually, set global attention based on the task. For example, >>> # classification: the <s> token >>> # QA: question tokens >>> # LM: potentially on the beginning of sentences and paragraphs >>> outputs = model(input_ids, attention_mask=attention_mask, global_attention_mask=global_attention_mask) >>> sequence_output = outputs.last_hidden_state >>> pooled_output = outputs.pooler_output
LongformerForMaskedLM
class transformers.LongformerForMaskedLM
( config )
参数
config
(LongformerConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
在顶部带有语言建模
头的 Longformer 模型。
这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是 PyTorch torch.nn.Module的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。
forward
( input_ids: Optional = None attention_mask: Optional = None global_attention_mask: Optional = None head_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.longformer.modeling_longformer.LongformerMaskedLMOutput or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是 input IDs?attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力。掩码值选在[0, 1]
之间:
- 1 表示
未被掩盖
的标记, - 0 表示
被掩盖
的标记。
- 什么是 attention masks?
global_attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于决定每个标记的注意力分配,局部注意力或全局注意力。具有全局注意力的标记关注所有其他标记,所有其他标记也关注它们。这对于任务特定的微调很重要,因为它使模型在表示任务时更加灵活。例如,对于分类,应该给予~~标记全局注意力。对于问答,所有问题标记也应该具有全局注意力。请参考Longformer paper获取更多详细信息。掩码值选在[0, 1]
之间:
- 0 表示局部注意力(滑动窗口注意力),
- 1 表示全局注意力(关注所有其他标记,所有其他标记也关注它们)。
head_mask
(torch.Tensor
of shape(num_layers, num_heads)
, optional) — 用于使编码器中的注意力模块中的选定头部失效的掩码。掩码值选在[0, 1]
之间:
- 1 表示头部
未被掩盖
, - 0 表示头部
被掩盖
。
decoder_head_mask
(torch.Tensor
of shape(num_layers, num_heads)
, optional) — 用于使解码器中的注意力模块中的选定头部失效的掩码。掩码值选在[0, 1]
之间:
- 1 表示头部
未被掩盖
, - 0 表示头部
被掩盖
。
token_type_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 段标记索引,指示输入的第一部分和第二部分。索引选在[0, 1]
之间:
- 0 对应于句子 A标记,
- 1 对应于句子 B标记。
- 什么是 token type IDs?
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。选择范围在[0, config.max_position_embeddings - 1]
内。
什么是 position IDs?inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多细节,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多细节,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。labels
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算掩盖语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩盖),损失仅计算具有标签在[0, ..., config.vocab_size]
范围内的标记kwargs
(Dict[str, any]
,可选,默认为*{}*)— 用于隐藏已被弃用的旧参数。
返回
transformers.models.longformer.modeling_longformer.LongformerMaskedLMOutput 或tuple(torch.FloatTensor)
一个 transformers.models.longformer.modeling_longformer.LongformerMaskedLMOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包括根据配置(LongformerConfig)和输入而异的各种元素。
loss
(形状为(1,)
的torch.FloatTensor
,可选,当提供labels
时返回)— 掩码语言建模(MLM)损失。logits
(形状为(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
)— 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入输出,一个用于每一层的输出)。
模型在每一层输出的隐藏状态加上初始嵌入输出。attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, x + attention_window + 1)
的torch.FloatTensor
元组(每层一个),其中x
是具有全局注意力掩码的标记数。在注意力 softmax 之后的局部注意力权重,用于计算自注意力头中的加权平均值。这些是从序列中的每个标记到具有全局注意力的每个标记(前x
个值)以及到注意力窗口中的每个标记(剩余的attention_window
值)的注意力权重。
- 注意:第一个
x
个值是指文本中具有固定位置的标记,但剩余的attention_window + 1
个值是指具有相对位置的标记:一个标记到自身的注意力权重位于索引x + attention_window / 2
,前(后)attention_window / 2
个值是指到前(后)attention_window / 2
个标记的注意力权重。如果注意力窗口包含具有全局注意力的标记,则相应索引处的注意力权重设置为 0;该值应从第一个x
个注意力权重中获取。如果一个标记具有全局注意力,则到attentions
中所有其他标记的注意力权重设置为 0,该值应从global_attentions
中获取。
global_attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, x)
的torch.FloatTensor
元组(每层一个),其中x
是具有全局注意力掩码的标记数。
在注意力 softmax 之后的全局注意力权重,用于计算自注意力头中的加权平均值。这些是从具有全局注意力的每个标记到序列中的每个标记的注意力权重。
LongformerForMaskedLM 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
填充掩码示例:
>>> from transformers import AutoTokenizer, LongformerForMaskedLM >>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096") >>> model = LongformerForMaskedLM.from_pretrained("allenai/longformer-base-4096")
让我们尝试一个非常长的输入。
>>> TXT = ( ... "My friends are <mask> but they eat too many carbs." ... + " That's why I decide not to eat with them." * 300 ... ) >>> input_ids = tokenizer([TXT], return_tensors="pt")["input_ids"] >>> logits = model(input_ids).logits >>> masked_index = (input_ids[0] == tokenizer.mask_token_id).nonzero().item() >>> probs = logits[0, masked_index].softmax(dim=0) >>> values, predictions = probs.topk(5) >>> tokenizer.decode(predictions).split() ['healthy', 'skinny', 'thin', 'good', 'vegetarian']
Transformers 4.37 中文文档(四十)(7)https://developer.aliyun.com/article/1564999