Transformers 4.37 中文文档(五十四)(5)

简介: Transformers 4.37 中文文档(五十四)

Transformers 4.37 中文文档(五十四)(4)https://developer.aliyun.com/article/1565376


RemBertModel

class transformers.RemBertModel

< source >

( config add_pooling_layer = True )

参数

  • config (RemBertConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。

裸的 RemBERT 模型,输出原始隐藏状态,没有特定的头部。此模型是 PyTorch torch.nn.Module 的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

该模型可以作为编码器(仅具有自注意力)以及解码器运行,此时在自注意力层之间添加了一层交叉注意力,遵循 Attention is all you need 中描述的架构,作者为 Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit,  Llion Jones, Aidan N. Gomez, Lukasz Kaiser 和 Illia Polosukhin。

要作为解码器运行,模型需要使用配置中的 is_decoder 参数初始化为 True。要在 Seq2Seq 模型中使用,模型需要使用 is_decoder 参数和 add_cross_attention 参数初始化为 True;然后期望将 encoder_hidden_states 作为输入传递给前向传递。

forward

< source >

( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), 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(形状为(batch_size, sequence_length)torch.LongTensor可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
    什么是位置 ID?
  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)— 用于使自注意力模块的选定头部失效的掩码。选择的掩码值在[0, 1]中:
  • 1 表示头部未被masked
  • 0 表示头部被masked
  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dictbool可选)— 是否返回一个 ModelOutput 而不是一个普通元组。
  • encoder_hidden_states(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)— 用于避免对编码器输入的填充标记索引执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。选择的掩码值在[0, 1]中:
  • 1 表示未被masked的标记,
  • 0 表示被masked的标记。
  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的 4 个张量)— 包含注意力块的预计算键和值隐藏状态。可用于加速解码。如果使用了past_key_values,用户可以选择仅输入最后的decoder_input_ids(这些没有将它们的过去键值状态提供给此模型的)形状为(batch_size, 1)的张量,而不是形状为(batch_size, sequence_length)的所有decoder_input_ids
  • use_cachebool可选)— 如果设置为True,则返回past_key_values键值状态,并可用于加速解码(参见past_key_values)。

返回值

transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或一个torch.FloatTensor元组(如果传递了return_dict=False或当config.return_dict=False时)包含各种元素,这取决于配置(RemBertConfig)和输入。

  • last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor)— 模型最后一层的隐藏状态序列。
    如果使用了past_key_values,则输出形状为(batch_size, 1, hidden_size)的序列的最后一个隐藏状态。
  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstuple(torch.FloatTensor)元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)的张量,如果config.is_encoder_decoder=True还有 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)的张量。
    包含预先计算的隐藏状态(自注意力块中的键和值,以及如果config.is_encoder_decoder=True在交叉注意力块中)可用于加速顺序解码(请参见past_key_values输入)。
  • hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出,如果模型有嵌入层,+ 一个用于每一层的输出)。
    模型在每一层输出的隐藏状态以及可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每一层一个)。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
  • cross_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.add_cross_attention=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每一层一个)。
    解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。

RemBertModel 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, RemBertModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/rembert")
>>> model = RemBertModel.from_pretrained("google/rembert")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

RemBertForCausalLM

class transformers.RemBertForCausalLM

< source >

( config )

参数

  • config (RemBertConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

带有顶部语言建模头部的 RemBERT 模型,用于 CLM 微调。此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。

forward

< source >

( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.CausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)— 避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]中。
  • 1 表示未被 masked的标记,
  • 0 表示被 masked的标记。
  • 什么是注意力掩码?
  • token_type_ids(形状为(batch_size, sequence_length)torch.LongTensor可选)— 段标记索引,指示输入的第一部分和第二部分。索引在[0, 1]中选择:
  • 0 对应于一个sentence A标记,
  • 1 对应于一个sentence B标记。
  • 什么是 token 类型 ID?
  • position_ids(形状为(batch_size, sequence_length)torch.LongTensor可选)— 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]中选择。
    什么是位置 ID?
  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)— 用于使自注意力模块的选定头部失效的掩码。选择的掩码值在[0, 1]中:
  • 1 表示头部未被 masked
  • 0 表示头部被masked
  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
  • return_dictbool可选)— 是否返回 ModelOutput 而不是普通元组。
  • encoder_hidden_states(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 编码器最后一层的输出处的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)— 避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。选择的掩码值在[0, 1]中:
  • 1 表示未被 masked的标记,
  • 0 表示被 masked的标记。
  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)的 4 个张量)— 包含注意力块的预计算键和值隐藏状态。可用于加速解码。如果使用past_key_values,用户可以选择仅输入最后的decoder_input_ids(这些没有将它们的过去键值状态提供给此模型的)形状为(batch_size, 1)的张量,而不是所有形状为(batch_size, sequence_length)decoder_input_ids
  • labels (torch.LongTensor,形状为(batch_size, sequence_length)optional) — 用于计算从左到右的语言建模损失(下一个词预测)的标签。索引应在[-100, 0, ..., config.vocab_size]内(参见input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算标签为[0, ..., config.vocab_size]的标记。
  • use_cache (bool, optional) — 如果设置为True,则返回past_key_values键值状态,可用于加速解码(参见past_key_values)。

返回

transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(RemBertConfig)和输入的不同元素。

  • loss (torch.FloatTensor,形状为(1,)optional, 当提供labels时返回) — 语言建模损失(用于下一个标记预测)。
  • logits (torch.FloatTensor,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。
  • hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入输出的一个+每层输出的一个)。
    模型在每一层输出的隐藏状态以及可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    注意力 softmax 后的自注意力头中的注意力权重,用于计算加权平均值。
  • cross_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    注意力 softmax 后的交叉注意力权重,用于计算交叉注意力头中的加权平均值。
  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstorch.FloatTensor元组的元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态,如果模型用于编码器-解码器设置,则相关。仅在config.is_decoder = True时相关。
    包含预先计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码(参见past_key_values输入)。

RemBertForCausalLM 的前向方法,覆盖__call__特殊方法。

虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, RemBertForCausalLM, RemBertConfig
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/rembert")
>>> config = RemBertConfig.from_pretrained("google/rembert")
>>> config.is_decoder = True
>>> model = RemBertForCausalLM.from_pretrained("google/rembert", config=config)
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.logits

RemBertForMaskedLM

class transformers.RemBertForMaskedLM

< source >

( config )

参数

  • config(RemBertConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

在顶部带有语言建模头的 RemBERT 模型。此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MaskedLMOutput 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 用于被“掩码”处理的标记。
  • 什么是注意力掩码?
  • token_type_ids(形状为(batch_size, sequence_length)torch.LongTensor可选)- 指示输入的第一部分和第二部分的段标记索引。索引选择在[0, 1]中:
  • 0 对应于句子 A标记,
  • 1 对应于句子 B标记。
  • 什么是令牌类型 ID?
  • position_ids(形状为(batch_size, sequence_length)torch.LongTensor可选)- 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]中选择。
    什么是位置 ID?
  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)- 用于使自注意力模块的选定头部失效的掩码。掩码值选择在[0, 1]中:
  • 1 表示头部未被“掩码”处理,
  • 0 表示头部被“掩码”处理。
  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)- 可选地,您可以选择直接传递嵌入表示而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。
  • output_attentionsbool可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_statesbool可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dictbool可选)- 是否返回 ModelOutput 而不是普通元组。
  • labels(形状为(batch_size, sequence_length)torch.LongTensor可选)- 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]中(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算具有标签在[0, ..., config.vocab_size]中的标记。

返回

transformers.modeling_outputs.MaskedLMOutput 或 tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.MaskedLMOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=False 或者 config.return_dict=False)包含各种元素,取决于配置(RemBertConfig)和输入。

  • loss (torch.FloatTensor,形状为 (1,)可选,当提供 labels 时返回) — 掩码语言建模(MLM)损失。
  • logits (torch.FloatTensor,形状为 (batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(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, sequence_length)torch.FloatTensor 元组(每层一个)。
    注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

RemBertForMaskedLM 的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用 Module 实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

例子:

>>> from transformers import AutoTokenizer, RemBertForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/rembert")
>>> model = RemBertForMaskedLM.from_pretrained("google/rembert")
>>> inputs = tokenizer("The capital of France is [MASK].", return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> # retrieve index of [MASK]
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]
>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-[MASK] tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)
>>> outputs = model(**inputs, labels=labels)


Transformers 4.37 中文文档(五十四)(6)https://developer.aliyun.com/article/1565378

相关文章
|
3月前
|
存储 自然语言处理
Transformers 4.37 中文文档(四十八)(1)
Transformers 4.37 中文文档(四十八)
38 2
|
3月前
|
缓存 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十六)(5)
Transformers 4.37 中文文档(五十六)
18 1
|
3月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(四十八)(4)
Transformers 4.37 中文文档(四十八)
35 1
|
3月前
|
自然语言处理 PyTorch 算法框架/工具
Transformers 4.37 中文文档(四十八)(5)
Transformers 4.37 中文文档(四十八)
22 1
|
3月前
|
存储 算法 PyTorch
Transformers 4.37 中文文档(五十四)(3)
Transformers 4.37 中文文档(五十四)
27 0
|
3月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(五十四)(2)
Transformers 4.37 中文文档(五十四)
21 0
|
3月前
|
自然语言处理 PyTorch TensorFlow
Transformers 4.37 中文文档(五十四)(6)
Transformers 4.37 中文文档(五十四)
19 0
|
3月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(五十四)(7)
Transformers 4.37 中文文档(五十四)
18 0
|
3月前
|
存储 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十四)(4)
Transformers 4.37 中文文档(五十四)
21 0
|
3月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(五十四)(8)
Transformers 4.37 中文文档(五十四)
24 0