ELECTRA
概览
ELECTRA模型在论文《ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators》中提出。ELECTRA是一种新的预训练方法,它训练两个转换器模型:生成器和解码器。生成器的角色是在序列中替换标记,因此它被训练成一个遮蔽语言模型。解码器(我们感兴趣的模式)试图识别序列中被生成器替换的哪些标记。
论文的摘要如下
掩码语言模型(MLM)的预训练方法,如BERT,通过用[MASK]替换一些标记来破坏输入,然后训练一个模型来重建原始标记。当这些方法转移到下游NLP任务时,它们会产生很好的结果,但是通常需要大量的计算资源来有效工作。作为一个替代方案,我们提出了一种更高效的预训练任务,称为替换标记检测。我们的方法不是对输入进行掩码,而是替换某些标记为小生成网络中采样出的合理替代品。然后,我们不是训练一个预测损坏标记原始身份的模型,而是训练一个判别模型,该模型预测每个损坏输入中的标记是否被生成器样本替换。彻底的实验表明,这个新的预训练任务比MLM更有效,因为任务定义在所有输入标记上,而不仅仅是被掩码的小子集上。因此,我们方法学到的上下文表示在学习给定的相同模型大小、数据和计算的情况下,显著优于BERT学习到的上下文表示。对于小型模型,这种改进尤为明显;例如,我们在一个GPU上训练了一个模型,持续了4天,在GLUE自然语言理解基准上优于使用30倍计算资源训练的GPT。我们的方法在大型模型上也很好用,它的性能与RoBERTa和XLNet相当,而使用的计算资源不到它们四分之一,在相同计算量的情况下,它甚至超过了它们。
使用提示
- ELECTRA是预训练方法,因此对底层模型BERT几乎没有改变:仅将嵌入大小和隐藏大小分开:嵌入大小通常更小,而隐藏大小较大。使用一个额外的投影层(线性层)将嵌入从嵌入大小投影到隐藏大小。如果嵌入大小与隐藏大小相同,则不需要投影层。
- ELECTRA是一个使用另一个(小型)掩码语言模型预训练的转换器模型。输入被该语言模型破坏,该语言模型对一个随机掩码的输入文本进行处理,并输出一个ELECTRA必须预测哪个标记是原始的,哪个已经被替换的文本。与GAN训练类似,该小型语言模型训练了几步(但以原始文本为目标,而不是像传统GAN设置中那样欺骗ELECTRA模型),然后ELECTRA模型也训练了几步。
- 使用Google Research实现保存的ELECTRA检查点包含生成器和判别器。转换脚本需要用户指定要导出为正确架构的模型。一旦转换为HuggingFace格式,这些检查点就可以加载到所有可用的ELECTRA模型中。这意味着判别器可以加载到ElectraForMaskedLM模型中,而生成器可以加载到ElectraForPreTraining模型中(分类头部将随机初始化,因为它在生成器中不存在)。
资源
ElectraConfig
类 transformers.ElectraConfig
< source >( vocab_size = 30522 embedding_size = 128 hidden_size = 256 num_hidden_layers = 12 num_attention_heads = 4 intermediate_size = 1024 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-12 summary_type = 'first' summary_use_proj = True summary_activation = 'gelu' summary_last_dropout = 0.1 pad_token_id = 0 position_embedding_type = 'absolute' use_cache = True classifier_dropout = None **kwargs )
参数
- vocab_size (
int
,可选,默认为30522) - ELECTRA模型的词汇量。定义了当调用ElectraModel或TFElectraModel时,inputs_ids
传过的不同令牌的数量。 - embedding_size (
int
,可选,默认为128) - 编码器层和池化层的维度。 - hidden_size (
int
,可选,默认为256) - 编码器层和池化层的维度。 - num_hidden_layers (
int
, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。 - num_attention_heads (
int
, 可选, 默认为 4) — Transformer 编码器中每个注意力层的注意头数量。 - intermediate_size (
int
, 可选, 默认为 1024) — Transformer 编码器中“中介”层(即前馈)的维度。 - hidden_act (
str
或Callable
, 可选, 默认为"gelu"
) — 编码器和池器中的非线性激活函数(函数或字符串)。如果为字符串,则支持"gelu"
、"relu"
、"silu"
和"gelu_new"
。 - hidden_dropout_prob (
float
, 可选,默认为0.1) — 用于嵌入层、编码器层和池化层的dropout概率。 - attention_probs_dropout_prob (
float
, 可选,默认为0.1) — 注意力概率的dropout比例。 - max_position_embeddings (
int
, 可选,默认为512) — 模型可能用到的最大序列长度。通常设置一个较大的值以防万一(例如,512或1024或2048)。 - type_vocab_size (
int
, 可选, 默认为 2) — 在调用 ElectraModel 或 TFElectraModel 时传递的token_type_ids
的词汇表大小。 - initializer_range (
float
, 可选, 默认为 0.02) — 所有权重矩阵初始时使用的 truncated_normal_initializer 的标准差。 - layer_norm_eps (
float
, 可选, 默认为 1e-12) — 层归一化层使用的 epsilon 值。 - summary_type (
str
, 可选,默认为"first"
) — 等序序列摘要时的参数。用于序列分类和多项选择模型。该值必须为以下选项之一:
"last"
:取最后一个标记的隐藏状态(如 XLNet)。"first"
:取第一个标记的隐藏状态(如 BERT)。"mean"
:取所有标记隐藏状态的均值。"cls_index"
:提供分类标记位置的 Tensor(如 GPT/GPT-2)。"attn"
:目前未实现,使用多头注意力。
- summary_use_proj (
bool
, 可选,默认为True
) — 用于序列摘要时的参数。用于序列分类和多项选择模型。在提取向量之后是否添加投影。
- summary_activation (
str
, 可选) — 用于序列摘要时的参数。用于序列分类和多项选择模型。返回输出时传递
"gelu"
用于 gelu 激活,任何其他值将导致没有任何激活。 - summary_last_dropout (
float
,可选,默认为 0.0) — 在序列摘要时使用的参数。用于序列分类和多项选择模型。 - position_embedding_type (
str
,可选,默认为"absolute"
) — 位置嵌入的类型。选择"absolute"
、"relative_key"
或"relative_key_query"">
中的一个。对于位置嵌入,使用"absolute"
。关于"relative_key"
的更多信息,请参阅 Self-Attention with Relative Position Representations (Shaw et al.)。关于"relative_key_query"
的更多信息,请参阅 方法 4 在 Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)。 - use_cache (
bool
,可选,默认为True
) — 模型是否应该返回最后的关键/值注意力(不是所有模型都使用)。只有当config.is_decoder=True
时才相关。 - classifier_dropout (
float
, 可选) — 分类头的dropout比率。
这是用于存储ElectraModel或TFElectraModel配置的配置类。它根据指定的参数实例化一个ELECTRA模型,定义模型架构。使用默认值实例化配置将产生与ELECTRA google/electra-small-discriminator架构类似的配置。
配置对象继承自PretrainedConfig,可用于控制模型输出。更多关于PretrainedConfig的信息,请参阅PretrainedConfig文档。
示例
>>> from transformers import ElectraConfig, ElectraModel
>>> # Initializing a ELECTRA electra-base-uncased style configuration
>>> configuration = ElectraConfig()
>>> # Initializing a model (with random weights) from the electra-base-uncased style configuration
>>> model = ElectraModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
ElectraTokenizer
类 transformers.ElectraTokenizer
< source >( vocab_file do_lower_case = True do_basic_tokenize = True never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )
参数
- vocab_file (
str
) — 包含词汇表的文件。 - do_lower_case (
bool
, 可选, 默认为True
) — 是否在标记化时将输入转换为小写。 - do_basic_tokenize (
bool
, 可选,默认为True
) — 是否在WordPiece之前进行基本标记化。 - never_split (
可迭代对象
, 可选) — 不会被分割的标记集合。只有当do_basic_tokenize=True
时有效。 - unk_token (
str
, 可选,默认为"[UNK]"
) — 未知标记。不在词汇表中的标记不能转换为ID,并设置为该标记。 - sep_token (
str
, 可选,默认为"[SEP]"
) — 分隔符标记,用于构建由多个序列组成的序列,例如用于序列分类的两个序列或用于问答的文本和问题。它还用作由特殊标记构建的序列的最后一个标记。 - pad_token (
str
, 可选,默认为"[PAD]"
) — 用于填充的标记,例如当批处理不同长度的序列时。 - cls_token (
str
, 可选,默认为"[CLS]"
) — 用于序列分类(整体序列分类而非逐词分类)的分类标记。当使用特殊标记构建时,它是序列的第一个标记。 - mask_token (
str
, 可选,默认为"[MASK]"
) — 用于掩码值的标记。这是在用掩码语言模型训练此模型时使用的标记。这是模型将尝试预测的标记。 - tokenize_chinese_chars (
bool
, 可选, 默认为True
) — 是否分词中文字符。 - strip_accents (
bool
, 可选) — 是否移除所有重音符号。如果未指定此选项,则将根据lowercase
的值(与原始 Electra 相同)确定。
构建一个 Electra 分词器。基于 WordPiece。
此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考该超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
< 源码 >( token_ids_0: List token_ids_1: Optional = None ) → List[int]
通过连接并添加特殊标记,从序列或序列对构建模型输入,用于序列分类任务。一个Electra序列有以下格式:
- 单个序列:
[CLS] X [SEP]
- 序列对:
[CLS] A [SEP] B [SEP]
将一系列标记(字符串)转换为单个字符串。
create_token_type_ids_from_sequences
< source >( token_ids_0: List token_ids_1: Optional = None ) → List[int]
从传入的两个序列中创建一个掩码,用于序列对分类任务。
如果 token_ids_1
是 None
,则此方法仅返回掩码的第一部分(0)。
ElectraTokenizerFast
类 transformers.ElectraTokenizerFast
< 来源 >( vocab_file = None tokenizer_file = None do_lower_case = True unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )
参数
- vocab_file (
str
) — 包含词汇表的文件。 - do_lower_case (
bool
, 可选, 默认为True
) — 在分词时是否将输入转换为小写。 - unk_token (
str
, 可选, 默认为"[UNK]"
) — 未知token。不在词汇表中的token不能转换为ID,将使用此token替代。 - sep_token (
str
, 可选, 默认为"[SEP]"
) — 分隔符token。在构建由多个序列组成的序列时使用,例如用于序列分类的两种序列或用于问答中的文本和问题。它还被用作带有特殊token构建的序列的最后一个token。 - pad_token (
str
, 可选, 默认为"[PAD]"
) — 用于填充的标记,例如在处理不同长度的序列批处理时。 - cls_token (
str
, 可选, 默认为"[CLS]"
) — 当进行序列分类(对整个序列进行分类而非按标记分类)时使用的分类标记。当使用特殊标记构建时,它是序列的第一个标记。 - mask_token (
str
, 可选, 默认为"[MASK]"
) — 用于遮盖值的标记。在用掩码语言模型训练此模型时使用此标记。这是模型将尝试预测的标记。 - clean_text (
bool
, 可选,默认为True
) —— 是否在分词前清理文本,通过移除所有控制字符并以传统方式替换所有空格。 - tokenize_chinese_chars (
bool
, 可选,默认为True
) —— 是否分词中文字符。对于日语,可能需要禁用此选项(参见 此问题)。 - strip_accents (
bool
, 可选) —— 是否移除所有重音符号。如果没有指定此选项,则将根据lowercase
(如原始ELECTRA)的值确定。 - wordpieces_prefix (
str
,可选,默认为"##"
)—— 子词的前缀。
构建一个“快速”ELECTRA分词器(由HuggingFace的 tokenizers 库支持)。基于WordPiece。
该分词器继承自PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考这个超类来获取有关这些方法的更多信息。
build_inputs_with_special_tokens
< source >( token_ids_0 token_ids_1 = None ) → List[int]
通过连接和添加特殊标记来从序列或序列对中构建序列分类任务的模型输入。ELECTRA序列的格式如下
- 单个序列:
[CLS] X [SEP]
- 序列对:
[CLS] A [SEP] B [SEP]
create_token_type_ids_from_sequences
< 源 >( token_ids_0: List token_ids_1: Optional = None ) → List[int]
从传递到序列对分类任务中的两个序列创建一个掩码。ELECTRA序列
如果 token_ids_1
是 None
,则此方法仅返回掩码的第一部分(0)。
Electra 特定输出
类 transformers.models.electra.modeling_electra.ElectraForPreTrainingOutput
< 源代码 >( loss: 可选 = None logits: FloatTensor = None hidden_states: 可选 = None attentions: 可选 = None )
参数
- loss (可选,当提供
labels
时返回,形状为(1,)
的torch.FloatTensor
) — ELECTRA 目标的总损耗。 - logits (
torch.FloatTensor
of shape(batch_size, sequence_length)
) — 头部的预测分数(SoftMax前的每个标记的分数)。 - hidden_states (
tuple(torch.FloatTensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) — 一个包含torch.FloatTensor
的元组(一个用于嵌入输出,一个用于每一层的输出),大小为(batch_size, sequence_length, hidden_size)
。模型在每个层输出的隐藏状态以及初始嵌入输出。
- attentions (
tuple(torch.FloatTensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) — 一个包含torch.FloatTensor
的元组(每个层一个),大小为(batch_size, num_heads, sequence_length, sequence_length)
。在自我注意头部中用于计算加权的平均值的注意力权重。
ElectraForPreTraining的输出类型。
类 transformers.models.electra.modeling_tf_electra.TFElectraForPreTrainingOutput
< source >( logits: tf.Tensor = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None )
参数
- loss (可选,当提供
labels
时返回,形状为(1,)
的tf.Tensor
) — ELECTRA 目标的总损失。 - logits(形状为
(batch_size, sequence_length)
的tf.Tensor
) — 头部的预测分数(SoftMax 之前的每个标记的分数)。 - hidden_states (
tuple(tf.Tensor)
, 可选,在传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —tf.Tensor
元组(一个用于嵌入层的输出,一个用于每个层的输出),形状为(batch_size, sequence_length, hidden_size)
。 - attentions (
tuple(tf.Tensor)
, 可选,在传递output_attentions=True
或当config.output_attentions=True
时返回) — 具有形状(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每个层有一个)。
TFElectraForPreTraining的输出类型。
ElectraModel
类 transformers.ElectraModel
< 来源 >( config )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型关联的权重,只会加载配置。请查看 from_pretrained() 方法以加载模型权重。
一个 bare Electra 模型,输出原始隐藏状态且不包含任何特定头部。与 BERT 模型相同,但它在嵌入层和编码器之间添加一个额外的线性层,如果隐藏大小和嵌入大小不同。可以将生成器和判别器的检查点加载到这个模型中。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< source >( input_ids: Optional = 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 ) → transformers.modeling_outputs.BaseModelOutputWithCrossAttentions or tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
) — 词汇表中的输入序列标记的索引。 使用AutoTokenizer获取索引。详细信息请参阅PreTrainedTokenizer.encode()和PreTrainedTokenizer.call()。 - attention_mask (
torch.FloatTensor
的形状为(batch_size, sequence_length)
,为可选项) — 避免对填充标记索引执行注意力的掩码。选择掩码值在[0, 1]
:- 1 表示未掩码的标记,
- 0 表示掩盖的标记。
- token_type_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,为可选项) — 段标记索引以指示输入的第一部分和第二部分。索引选择在[0, 1]
:- 0 代表 句子 A 标记,
- 1 代表 句子 B 标记。
- position_ids (形状为
torch.LongTensor
的(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围在[0, config.max_position_embeddings - 1]
之间。 - head_mask (形状为
torch.FloatTensor
的(num_heads,)
或(num_layers, num_heads)
,可选) — 用于取消选定头的自注意力模块的掩码。掩码值选择在[0, 1]
:- 1 表示该头未被 掩码,
- 0 表示该头被 掩码。
- inputs_embeds (形状为
torch.FloatTensor
的(batch_size, sequence_length, hidden_size)
,可选) — 可以选择直接传递嵌入表示,而不是传递input_ids
。当你想比模型内部嵌入查找矩阵有更多控制权如何将input_ids
索引转换成相关的向量时,这非常有用。 - encoder_hidden_states (
torch.FloatTensor
形状(batch_size, sequence_length, hidden_size)
,可选)— 最后一个编码器层的隐藏状态序列。当模型配置为解码器时用于交叉注意力。 - encoder_attention_mask (
torch.FloatTensor
形状(batch_size, sequence_length)
,可选)— 避免对编码器输入中的填充token索引执行注意力的掩码。当模型配置为解码器时用于交叉注意力。掩码值选择在[0, 1]
范围内:- 1 表示头部未 掩码,
- 0 表示头部已 掩码。
- output_attentions (
bool
,可选)— 是否返回所有注意力层的注意力张量。更详细的信息请参阅返回张量中的attentions
。 - output_hidden_states (布尔值,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的
hidden_states
。 - return_dict (布尔值,可选) — 是否返回 ModelOutput 实例而非原始元组。
返回
transformers.modeling_outputs.BaseModelOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
A transformers.modeling_outputs.BaseModelOutputWithCrossAttentions 或一个 torch.FloatTensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含根据配置(ElectraConfig)和输入的各种元素。
-
last_hidden_state (形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor) — 模型最后层输出的隐藏状态序列。
-
hidden_states (可选,当传递 output_hidden_states=True 或配置 output_hidden_states=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor 元组(如果有嵌入层,则包括嵌入层的输出加上每个层的输出)。
每个层的模型输出隐藏状态以及可选的初始嵌入输出。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
-
cross_attentions (可选,当传递 output_attentions=True 和配置 add_cross_attention=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
解码器交叉注意力层的注意力权重,softmax 后,用于在交叉注意力头中计算加权平均值。
ElectraModel 的 forward 方法覆盖了 __call__ 特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, ElectraModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraModel.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
ElectraForPreTraining
类 transformers.ElectraForPreTraining
< source >( config )
参数
- config (ElectraConfig) — 模型配置类,包含所有模型参数。使用配置文件初始化不加载与模型关联的权重,只加载配置。查看from_pretrained()方法来加载模型权重。
Electra模型,顶部有二分类头,用于在预训练期间识别生成的标记。
建议将该判别器检查点加载到该模型中。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< 源代码 >( input_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) → transformers.models.electra.modeling_electra.ElectraForPreTrainingOutput or tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。索引可以通过使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- 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 令牌。
- position_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列令牌在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
torch.FloatTensor
的形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 取消自注意力模块中选定头部的掩码。掩码值在[0, 1]
中选取:- 1 表示头部没有被 掩码;
- 0 表示头部被 掩码。
- inputs_embeds (
torch.FloatTensor
的形状为(batch_size, sequence_length, hidden_size)
,可选) — 可以直接传递嵌入表示,而不仅仅是传递input_ids
。这在你想对如何将input_ids
索引转换为相关向量有更多控制权时很有用。 - encoder_hidden_states (
torch.FloatTensor
的形状为(batch_size, sequence_length, hidden_size)
,可选) — 最后一个编码器层的隐藏状态的序列。如果模型配置为解码器,则在交叉注意力中使用。 - encoder_attention_mask (
torch.FloatTensor
形状为(batch_size, sequence_length)
的,可选)用于避免对编码器输入的中垫token索引执行注意力操作。如果模型配置为解码器,则在此交叉注意力中使用此掩码。掩码值选取在[0, 1]
之间:- 1 表示头部 未掩码,
- 0 表示头部 已掩码。
- output_attentions (
bool
,可选)表明是否返回所有注意力层的注意力张量。更多信息请参阅返回张量下的attentions
。 - output_hidden_states (
bool
,可选)表明是否返回所有层的隐藏状态。更多信息请参阅返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否以字典形式返回而不是普通元组。 - labels (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 用于计算 ELECTRA 损失的标签。输入应为 token 序列(参见input_ids
的文档字符串)索引应为[0, 1]
:- 0 表示 token 是原始 token,
- 1 表示 token 被替换了。
返回
transformers.models.electra.modeling_electra.ElectraForPreTrainingOutput 或 tuple(torch.FloatTensor)
当传递了 output_dict=False
或当 config.return_dict=False
时,返回 transformers.models.electra.modeling_electra.ElectraForPreTrainingOutput 或 torch.FloatTensor
的元组。
-
loss (可选,当提供
labels
时返回,形状为(1,)
的torch.FloatTensor
) — ELECTRA 目标函数的总损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, sequence_length)
) — 头部的预测分数(SoftMax 之前的每个 token 的分数)。 -
hidden_states (
tuple(torch.FloatTensor)
,可选,在传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 包含torch.FloatTensor
的元组(一个用于嵌入输出的输出,一个用于每个层的输出)形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
ElectraForPreTraining 的前进方法覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import ElectraForPreTraining, AutoTokenizer
>>> import torch
>>> discriminator = ElectraForPreTraining.from_pretrained("google/electra-base-discriminator")
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-base-discriminator")
>>> sentence = "The quick brown fox jumps over the lazy dog"
>>> fake_sentence = "The quick brown fox fake over the lazy dog"
>>> fake_tokens = tokenizer.tokenize(fake_sentence, add_special_tokens=True)
>>> fake_inputs = tokenizer.encode(fake_sentence, return_tensors="pt")
>>> discriminator_outputs = discriminator(fake_inputs)
>>> predictions = torch.round((torch.sign(discriminator_outputs[0]) + 1) / 2)
>>> fake_tokens
['[CLS]', 'the', 'quick', 'brown', 'fox', 'fake', 'over', 'the', 'lazy', 'dog', '[SEP]']
>>> predictions.squeeze().tolist()
[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]
ElectraForCausalLM
类 transformers.ElectraForCausalLM
< 源代码 >( config )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不加载与模型关联的权重,只加载配置。请查看 from_pretrained() 方法来加载模型权重。
ELECTRA 模型,顶部配有 语言建模
头部,用于 CLM 微调。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< 源 >( input_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None encoder_hidden_states: 可选 = None encoder_attention_mask: 可选 = None labels: 可选 = None past_key_values: 可选 = None use_cache: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) → transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
) — 词表中的输入序列标记索引。索引可以通过 AutoTokenizer 获取。详见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
形状为(batch_size, sequence_length)
, 可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 代表 未掩码 的标记,
- 0 代表 掩码 的标记。
- token_type_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
, 可选) — 用于指示输入的两部分(句子A和句子B)的标记部分索引。索引选择在[0, 1]
之间:- 0 对应于 句子A 标记,
- 1 对应于 句子B 标记。
- position_ids (shape为
(batch_size, sequence_length)
的torch.LongTensor
,可选)—— 每个输入序列令牌在位置嵌入中的位置索引。在[0, config.max_position_embeddings - 1]
范围内选择。 - head_mask (shape为
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)—— 用于取消自注意力模块中选定的头的掩码。掩码值在[0, 1]
之间:- 1表示头没有被掩码掩码,
- 0表示头被掩码。
- inputs_embeds (shape为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)—— 可选地,您可以选择直接传递嵌入表示而不仅仅是传递input_ids。如果您想让模型将input_ids索引转换为相关向量,而这比模型的内部嵌入查找矩阵有更精细的控制权,将是非常有用的。 - encoder_hidden_states (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 编码器的最后一层输出的隐藏状态序列。如果模型配置为解码器,则用于交叉注意力。 - encoder_attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则用于交叉注意力。掩码值选择在[0, 1]
:- 1 表示头未 掩码,
- 0 表示头已 掩码。
- output_attentions (
bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详情,请参阅返回的张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关返回张量中的hidden_states
的更多详细信息,请参阅。 - return_dict (
bool
, 可选) — 是否返回ModelOutput而不是一个普通元组。 - encoder_hidden_states (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 编码器的最后一层输出的隐藏状态序列。如果模型配置为解码器,则用于交叉注意力。 - encoder_attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 避免对编码器输入中填充令牌索引执行注意力机制的遮挡。如果该模型配置为解码器,该遮挡将在交叉注意力中使用。遮挡值选择在[0, 1]
之间:- 1表示未遮挡的令牌;
- 0表示遮挡的令牌。
- labels (
torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 用于计算从左到右的语言模型损失(下一个词预测)的标签。索引应该在[-100, 0, ..., config.vocab_size]
范围内(见input_ids
的文档字符串)索引设置为-100
的标记将被忽略(遮蔽),仅对索引在[0, ..., config.vocab_size]
范围内的标记计算损失 - past_key_values (
tuple(tuple(torch.FloatTensor))
of lengthconfig.n_layers
with each tuple having 4 tensors of shape(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
) — 包含注意力块预计算的键值隐藏状态。可以用于加速解码。如果使用
past_key_values
,用户可以选择只输入最后一个decoder_input_ids
(即那些没有给此模型提供过去键值状态的decoder_input_ids
),其形状为(batch_size, 1)
,而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 - use_cache (
bool
, 可选) — 如果设置为True
,则返回past_key_values
键值状态,并且可以使用它来加速解码(见past_key_values
)。
返回
transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
A transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一个包含各种元素的 torch.FloatTensor
组合(如果传递 return_dict=False
或当 config.return_dict=False
时),这些元素取决于配置(ElectraConfig)和输入。
-
loss(《torch.FloatTensor,形状
(1,)
,可选,当提供labels
时返回)— 语言模型损失(用于下一标记预测)。 -
logits(《torch.FloatTensor,形状
(batch_size, sequence_length, config.vocab_size)
)— 语言模型头部的预测分数(SoftMax之前的每个词汇表的分数)。 -
hidden_states (可选,当传递 output_hidden_states=True 或配置 output_hidden_states=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor 元组(如果有嵌入层,则包括嵌入层的输出加上每个层的输出)。
每个层的模型输出隐藏状态以及可选的初始嵌入输出。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
-
交叉注意力(《tuple(torch.FloatTensor)),可选,当传递
output_attentions=True
时返回或当config.output_attentions=True
时),形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。注意力softmax之后的交叉注意力权重,用于在交叉注意力头部中进行加权的平均值计算。
-
past_key_values(《tuple(tuple(torch.FloatTensor)),可选,当传递
use_cache=True
时返回或当config.use_cache=True
时),长度为config.n_layers
的torch.FloatTensor
元组的一个元组,其中每个元组包含如果模型用于编码器-解码器设置中的缓存关键和值状态(如果config.is_decoder = True
)。只有当config.is_decoder = True
时才相关。包含可以用于(请参阅
past_key_values
输入)以加快顺序解码的预计算隐藏状态(关注块中的键和值)。
ElectraForCausalLM 前向方法,覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, ElectraForCausalLM, ElectraConfig
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-base-generator")
>>> config = ElectraConfig.from_pretrained("google/electra-base-generator")
>>> config.is_decoder = True
>>> model = ElectraForCausalLM.from_pretrained("google/electra-base-generator", config=config)
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.logits
ElectraForMaskedLM
类 transformers.ElectraForMaskedLM
< source >( config )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不加载模型相关的权重,只加载配置。查看from_pretrained() 方法以加载模型权重。
在顶部添加语言模型头的Electra模型。
尽管判别器和生成器都可以加载到这个模型中,但只有生成器是两个模型中唯一一个训练过掩码语言建模任务的模型。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< source >( input_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) → transformers.modeling_outputs.MaskedLMOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中的输入序列标记索引。索引可以通过使用 AutoTokenizer 来获得。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, 可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 代表未掩码的标记,
- 0 代表掩码标记。
- token_type_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 表示输入前半部分和后半部分的分段标记索引。索引选择在[0, 1]
之间:- 0 代表句子 A 标记,
- 1 代表句子 B 标记。
- position_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 每个输入序列标记在位置嵌入中的索引。选择在范围[0, config.max_position_embeddings - 1]
内。 - encoder_attention_mask (
torch.FloatTensor
的形状为(batch_size, sequence_length)
,可选) — 用于避免对编码输入中填充标记索引执行注意力的掩码。该掩码在模型配置为解码器时用于交叉注意力。选择掩码值在[0, 1]
:- 1 表示头部未被 屏蔽,
- 0 表示头部被 屏蔽。
- output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。更多详情请参见返回张量下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。更多详情请参见返回张量下的hidden_states
。 - return_dict (
布尔值
,可选) — 是否返回ModelOutput 而不是纯元组。 - labels (
形状为(batch_size, sequence_length)的torch.LongTensor
,可选) — 用于计算遮蔽语言模型损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(见input_ids
文档字符串)将索引设置为-100
的标记将被忽略(遮蔽),仅对索引在[0, ..., config.vocab_size]
范围内的标签计算损失
返回
transformers.modeling_outputs.MaskedLMOutput 或 torch.FloatTensor
元组
A transformers.modeling_outputs.MaskedLMOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或者当config.return_dict=False
)它包含各种元素,具体取决于配置(ElectraConfig)和输入。
-
loss (
形状为(1,)的torch.FloatTensor
,可选,当提供labels
时返回) — 遮蔽语言模型(MLM)损失。 -
logits(《torch.FloatTensor,形状
(batch_size, sequence_length, config.vocab_size)
)— 语言模型头部的预测分数(SoftMax之前的每个词汇表的分数)。 -
hidden_states (可选,当传递 output_hidden_states=True 或配置 output_hidden_states=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor 元组(如果有嵌入层,则包括嵌入层的输出加上每个层的输出)。
每个层的模型输出隐藏状态以及可选的初始嵌入输出。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
ElectraForMaskedLM的向前方法,覆盖了__call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, ElectraForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-generator")
>>> model = ElectraForMaskedLM.from_pretrained("google/electra-small-generator")
>>> 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)
>>> tokenizer.decode(predicted_token_id)
'paris'
>>> 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)
>>> round(outputs.loss.item(), 2)
1.22
ElectraForSequenceClassification
class transformers.ElectraForSequenceClassification
< 来源 >( config )
参数
- 配置 (ElectraConfig) — 具有所有模型参数的模型配置类。使用配置文件初始化并不加载模型的权重,只有配置。请参阅from_pretrained() 方法以加载模型的权重。
ELECTRA 模型变压器,具有序列分类/回归头(在池化输出之上的线性层),例如用于 GLUE 任务。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< 来源 >( input_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) → transformers.modeling_outputs.SequenceClassifierOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。索引可以通过 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
的形状为(batch_size, sequence_length)
,可选) — 用于避免在填充词索引上执行注意力的掩码。掩码值选择在[0, 1]
范围内:- 对于未被掩码的标记,值为 1,
- 对于被掩码的标记,值为 0
- token_type_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 用于显示输入的第一和第二部分的段标记索引。索引选择在[0, 1]
范围内:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
- position_ids (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 - head_mask (形状为
torch.FloatTensor
的(num_heads,)
或(num_layers, num_heads)
,可选) - 用于取消选择自注意力模块选定头部的遮罩。遮罩值选择在[0, 1]
之间:- 1 表示头部 未遮罩,
- 0 表示头部 遮罩。
- inputs_embeds (形状为
torch.FloatTensor
的(batch_size, sequence_length, hidden_size)
,可选) - 可选地,您可以不传递input_ids
,而是直接传递嵌入表示。如果您希望在对input_ids
索引进行向量转换的方式上比模型内部的嵌入查找矩阵有更多控制权,此选项很有用。 - encoder_hidden_states (形状为
torch.FloatTensor
的(batch_size, sequence_length, hidden_size)
,可选) - 解码器最后的编码层输出的隐藏状态的序列。如果在模型配置为解码器的情况下启用交叉注意力,则使用这些隐藏状态。 - encoder_attention_mask (形状为
(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在编码器输入填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。选择的掩码值为[0, 1]
:- 1 表示头未掩码
- 0 表示头已掩码
- output_attentions (布尔值,可选)— 是否返回所有注意力层张量。有关更多信息,请参阅返回张量下的
attentions
。 - output_hidden_states (布尔值,可选)— 是否返回所有层的隐藏状态。有关更多信息,请参阅返回张量下的
hidden_states
。 - return_dict (
bool
, 可选) — 是否返回ModelOutput对象而不是普通元组。 - labels (
torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels == 1
,则计算回归损失(均方损失);如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回
transformers.modeling_outputs.SequenceClassifierOutput或tuple(torch.FloatTensor)
A transformers.modeling_outputs.SequenceClassifierOutput或一个torch.FloatTensor
的元组(如果传递了return_dict=False
或当config.return_dict=False
时),包含根据配置(ElectraConfig)和输入而定的各种元素。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类(或回归,如果config.num_labels==1)的损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — 分类(或回归,如果config.num_labels==1)分数(SoftMax之前)。 -
hidden_states (可选,当传递 output_hidden_states=True 或配置 output_hidden_states=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor 元组(如果有嵌入层,则包括嵌入层的输出加上每个层的输出)。
每个层的模型输出隐藏状态以及可选的初始嵌入输出。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
ElectraForSequenceClassification的forward方法覆盖了特殊的__call__
方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
单标签分类的示例
>>> import torch
>>> from transformers import AutoTokenizer, ElectraForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("bhadresh-savani/electra-base-emotion")
>>> model = ElectraForSequenceClassification.from_pretrained("bhadresh-savani/electra-base-emotion")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
'joy'
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = ElectraForSequenceClassification.from_pretrained("bhadresh-savani/electra-base-emotion", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
0.06
多标签分类的示例
>>> import torch
>>> from transformers import AutoTokenizer, ElectraForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("bhadresh-savani/electra-base-emotion")
>>> model = ElectraForSequenceClassification.from_pretrained("bhadresh-savani/electra-base-emotion", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = ElectraForSequenceClassification.from_pretrained(
... "bhadresh-savani/electra-base-emotion", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss
ElectraForMultipleChoice
类 transformers.ElectraForMultipleChoice
< 源代码 >( config )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型相关的权重,只会加载配置。请查看 from_pretrained() 方法以加载模型权重。
ELECTRA 模型,顶部带有多项选择题头(池化输出上的线性层和softmax),例如用于RocStories/SWAG任务。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< 源码 >( input_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) → transformers.modeling_outputs.MultipleChoiceModelOutput or tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
of shape(batch_size, num_choices, sequence_length)
) — 输入序列词元在词汇表中的索引。索引可以通过 AutoTokenizer 获取。查看 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以获取详细信息。
- attention_mask (
torch.FloatTensor
大小为(batch_size, num_choices, sequence_length)
,可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码数值范围在[0, 1]
:- 1 代表未进行掩码的标记,
- 0 代表进行了掩码的标记。
- token_type_ids (
torch.LongTensor
大小为(batch_size, num_choices, sequence_length)
,可选) — 段落标记索引,用于标识输入的第一部分和第二部分。索引范围在[0, 1]
:- 0 代表 句子 A 的标记,
- 1 代表 句子 B 的标记。
- position_ids (
torch.LongTensor
大小为(batch_size, num_choices, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围在[0, config.max_position_embeddings - 1]
。 - head_mask (
torch.FloatTensor
形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 减零选定的自注意力模块的头部。掩码值在[0, 1]
中选择:- 1 表示头部未被 减零,
- 0 表示头部被 减零。
- inputs_embeds (
torch.FloatTensor
形状为(batch_size, num_choices, sequence_length, hidden_size)
,可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要比模型内部嵌入查找矩阵更多的控制来转换input_ids
索引到相关向量,这很有用。 - encoder_hidden_states (
torch.FloatTensor
形状为(batch_size, num_choices, sequence_length, hidden_size)
,可选) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,用于交叉注意力。 - encoder_attention_mask (
torch.FloatTensor
of shape(batch_size, num_choices, sequence_length)
, 可选) — 用于避免在编码器输入的填充标记索引上执行注意力的遮挡。如果模型配置为解码器,此遮挡会在交叉注意力中使用。遮挡值选择在[0, 1]
之间:- 1 表示头 未遮挡;
- 0 表示头 已遮挡。
- output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关返回张量下的详细信息,请参阅attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关返回张量下的详细信息,请参阅hidden_states
。 - return_dict (
bool
,可选)— 是否返回ModelOutput对象而不是普通元组。 - labels (
torch.LongTensor
形状为(batch_size,)
,可选)— 用于计算多选分类损失的标签。索引应在[0, ..., num_choices-1]
范围内,其中num_choices
是输入张量第二维的大小。(参见上面的input_ids
)
返回
或 transformers.modeling_outputs.MultipleChoiceModelOutput、或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.MultipleChoiceModelOutput 或一个包含各种元素的 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
)取决于配置(ElectraConfig)和输入。
-
loss (
torch.FloatTensor
形状为 (1,),可选,当提供labels
时返回)— 分类损失。 -
logits (
torch.FloatTensor
形状为(batch_size, num_choices)
)— num_choices 是输入张量第二维的大小。(参见上面的 input_ids)分类得分(在 SoftMax 之前)。
-
hidden_states (可选,当传递 output_hidden_states=True 或配置 output_hidden_states=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor 元组(如果有嵌入层,则包括嵌入层的输出加上每个层的输出)。
每个层的模型输出隐藏状态以及可选的初始嵌入输出。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
ElectraForMultipleChoice 前向方法覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, ElectraForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = ElectraForMultipleChoice.from_pretrained("google/electra-small-discriminator")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0) # choice0 is correct (according to Wikipedia ;)), batch size 1
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels) # batch size is 1
>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logits
ElectraForTokenClassification
类 transformers.ElectraForTokenClassification
< 来源 >( config )
参数
- 配置 (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化时不会加载与模型关联的权重,只有配置。请查看 from_pretrained() 方法加载模型权重。
带token分类头的Electra模型。
判别器和生成器都可能加载到这个模型中。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< 来源 >( input_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) → transformers.modeling_outputs.TokenClassifierOutput or tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
) — 词汇表中输入序列的标记索引。可以使用AutoTokenizer获取索引。有关详细信息,请参阅PreTrainedTokenizer.encode()和PreTrainedTokenizer.call()。
- 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标记。
- position_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 输入序列中每个标记的索引位置在位置嵌入中的位置。选取范围在[0, config.max_position_embeddings - 1]
内。 - head_mask (
torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, 可选) — 用于取消选择自我注意模块的选定头部的掩码。掩码值选取范围在[0, 1]
:- 1 表示该头部 未屏蔽,
- 0 表示该头部 已屏蔽。
- inputs_embeds (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, 可选) — 可选择直接传递嵌入表示,而不是传递input_ids
。这在您想要比模型内部嵌入查找矩阵更精确地控制如何将input_ids
索引转换为相关向量时特别有用。 - encoder_hidden_states (
torch.FloatTensor
的形状为(batch_size, sequence_length, hidden_size)
,可选) — 最后一个编码器层输出中的隐藏态序列。如果模型配置为解码器,则用于交叉注意力。 - encoder_attention_mask (
torch.FloatTensor
的形状为(batch_size, sequence_length)
,可选) — 用于避免对编码器输入中填充令牌索引执行注意力的掩码。如果模型配置为解码器,则用于交叉注意力。掩码值在[0, 1]
中选择:- 1 表示头部 未掩码,
- 0 表示头部 掩码。
- output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多细节,请参阅返回的张量下方的attentions
。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐藏状态。有关详情,请参阅返回张量下的hidden_states
。 - return_dict (
bool
, optional) — 是否返回一个 ModelOutput 而不是普通的元组。 - labels (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算标记分类损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。
返回
transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
A transformers.modeling_outputs.TokenClassifierOutput 或一个 torch.FloatTensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
)
-
loss (
torch.FloatTensor
of shape(1,)
, optional, returned whenlabels
is provided) — 分类损失。 -
logits (
torch.FloatTensor
of shape(batch_size, sequence_length, config.num_labels)
) — 分类分数(在 SoftMax 之前)。 -
hidden_states (可选,当传递 output_hidden_states=True 或配置 output_hidden_states=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor 元组(如果有嵌入层,则包括嵌入层的输出加上每个层的输出)。
每个层的模型输出隐藏状态以及可选的初始嵌入输出。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
ElectraForTokenClassification 的前向方法,覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, ElectraForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("bhadresh-savani/electra-base-discriminator-finetuned-conll03-english")
>>> model = ElectraForTokenClassification.from_pretrained("bhadresh-savani/electra-base-discriminator-finetuned-conll03-english")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
['B-LOC', 'B-ORG', 'O', 'O', 'O', 'O', 'O', 'B-LOC', 'O', 'B-LOC', 'I-LOC']
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
0.11
ElectraForQuestionAnswering
类 transformers.ElectraForQuestionAnswering
< source >( config )
参数
- config (ElectraConfig) — 模型参数的全集配置类。使用配置文件初始化时不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法来加载模型权重。
搭载跨度分类头部的ELECTRA模型,用于SQuAD等抽式问答任务(在隐藏状态输出之上增加线性层以计算跨度开始logits
和跨度结束logits
)。
此模型继承自 PreTrainedModel。有关库为所有模型实现的一般方法(如下载或保存,调整输入嵌入大小,剪枝头部等),请查看超类文档。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档了解所有与一般使用和行为相关的内容。
正向操作
< 来源 >( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None start_positions: Optional = None end_positions: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → transformers.modeling_outputs.QuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (形状为
(批次大小, 序列长度)
的torch.LongTensor
) — 词汇表中的输入序列标记的索引。可以使用AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (形状为
(批次大小, 序列长度)
的torch.FloatTensor
,可选) — 避免在填充标记索引上执行注意力操作的掩码。掩码值选择在[0, 1]
中:- 1 表示未掩码的标记,
- 0 表示掩码的标记。
- token_type_ids (形状为
(批次大小, 序列长度)
的torch.LongTensor
,可选) — 用于指示输入的第一个和第二个部分的段标记索引。索引选择在[0, 1]
中:- 0 对应于 句子A 标记,
- 1 对应于 句子B 标记。
- position_ids (
torch.LongTensor
形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置的索引。在选择范围[0, config.max_position_embeddings - 1]
内。 - head_mask (
torch.FloatTensor
形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 控制掩码,以屏蔽自注意力模块中选定的头。掩码值选择在[0, 1]
范围内:- 1 表示头 未被屏蔽,
- 0 表示头已被 屏蔽。
- inputs_embeds (
torch.FloatTensor
形状为(batch_size, sequence_length, hidden_size)
,可选) — 可以选择直接传递嵌入表示,而不是传递input_ids
。这在您想要比模型内部嵌入查找矩阵有更多控制权如何将input_ids
索引用于关联向量时很有用。 - encoder_hidden_states (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, 可选) — 编码器最后一层输出的隐藏状态序列。当模型配置为解码器时,用于交叉注意力。 - encoder_attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, 可选) — 避免在编码器输入的填充标记索引上执行注意力的掩码。当模型配置为解码器时,用于交叉注意力。掩码值选择在[0, 1]
:- 1 表示头 未掩码,
- 0 表示头 已掩码。
- output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多细节,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。请参阅返回张量中的hidden_states
了解更多细节。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 实例而不是普通元组。 - start_positions (
torch.LongTensor
的 shape 为(batch_size,)
,可选) — 标记的起始段的起始位置标签,用于计算标记化损失。位置会被限制到序列长度(sequence_length
)。序列外的位置不会用于计算损失。 - end_positions (
torch.LongTensor
of shape(batch_size,)
, 可选) — 计算token分类损失的标记结束位置标签。位置被限制在序列长度(sequence_length
)内。序列外的位置不计入损失计算。
返回
transformers.modeling_outputs.QuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
A transformers.modeling_outputs.QuestionAnsweringModelOutput 或一个包含多个元素(根据配置(ElectraConfig) 和输入)的torch.FloatTensor
元组(如果传递了return_dict=False
,或者当config.return_dict=False
时)。
-
loss (
torch.FloatTensor
of shape(1,)
, 可选,当提供labels
时返回) — 总范围提取损失为起始和结束位置的交叉熵之和。 -
start_logits (
torch.FloatTensor
of shape(batch_size, sequence_length)
) — 范围起始得分(SoftMax之前)。 -
end_logits (
torch.FloatTensor
of shape(batch_size, sequence_length)
) — 范围结束得分(SoftMax之前)。 -
hidden_states (可选,当传递 output_hidden_states=True 或配置 output_hidden_states=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, sequence_length, hidden_size) 的 torch.FloatTensor 元组(如果有嵌入层,则包括嵌入层的输出加上每个层的输出)。
每个层的模型输出隐藏状态以及可选的初始嵌入输出。
-
attentions (可选,当传递 output_attentions=True 或配置 output_attentions=True 时返回的 torch.FloatTensor 元组) — 形状为 (batch_size, num_heads, sequence_length, sequence_length) 的 torch.FloatTensor 元组(每个层一个)。
注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
ElectraForQuestionAnswering前向方法覆写了__call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, ElectraForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("bhadresh-savani/electra-base-squad2")
>>> model = ElectraForQuestionAnswering.from_pretrained("bhadresh-savani/electra-base-squad2")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()
>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
'a nice puppet'
>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([11])
>>> target_end_index = torch.tensor([12])
>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
2.64
TFElectraModel
class transformers.TFElectraModel
< 来源 >( config *inputs **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化时,不会加载与模型相关的权重,只加载配置。检查 from_pretrained() 方法以加载模型权重。
一个 bare Electra 模型,输出原始隐藏状态且不包含任何特定头部。与 BERT 模型相同,但它在嵌入层和编码器之间添加一个额外的线性层,如果隐藏大小和嵌入大小不同。可以将生成器和判别器的检查点加载到这个模型中。
此模型继承自 TFPreTrainedModel。请检查父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)
此模型还是 keras.Model 的子类。可以将它作为常规的 TF 2.0 Keras 模型使用,并查阅 TF 2.0 文档,了解所有有关通用使用和行为的内容。
TensorFlow 中的模型和层在 transformers
中接受两种输入格式
- 所有输入作为关键字参数(类似于 PyTorch 模型),或者
- 所有输入作为一个列表、元组或字典作为第一个位置参数。
支持第二种格式的原因是,Keras 方法更喜欢以这种格式传递输入到模型和层。由于这种支持,当使用类似 model.fit()
的方法时,应该“自动”针对您进行操作 - 只需以 model.fit()
支持的任何格式传递您的输入和标签即可!但是,如果您想在外部使用 Keras 方法(如 fit()
和 predict()
)之外使用第二种格式,例如在创建自己的层或模型时,可以使用 Keras Functional
API,有三个可能性来收集第一个位置参数中的所有输入张量
- 只有一个带有
input_ids
且不包含其他内容的张量:model(input_ids)
- 一个长度可变的列表,包含一个或多个按照文档字符串中指定的顺序传入的输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个与文档字符串中给出的输入名称关联的一个或多个输入张量的字典:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
注意,当使用子类化创建模型和层时,您不必担心这些问题,因为您只需要像传递任何其他Python函数的输入一样传递输入即可!
调用
< 来源 >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None encoder_hidden_states: np.ndarray | tf.Tensor | None = None encoder_attention_mask: np.ndarray | tf.Tensor | None = None past_key_values: Optional[Tuple[Tuple[Union[np.ndarray, tf.Tensor]]]] = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions or tuple(tf.Tensor)
参数
- input_ids (
Numpy数组
或tf.Tensor
,形状为(batch_size, sequence_length)
) — 输入序列令牌在整个词汇表中的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (
Numpy数组
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 表示 非掩码 令牌,
- 0 表示 掩码 令牌。
- position_ids (
Numpy数组
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列令牌在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask(《Numpy数组》或《tf.Tensor》格式,形状为
(num_heads,)或(num_layers, num_heads)
,可选)— 用于注销自注意力模块中选定头部的掩码。掩码值在[0, 1]
范围内选择:- 1表示头部没有掩码,
- 0表示头部被掩码。
- inputs_embeds(《tf.Tensor》格式,形状为
(batch_size, sequence_length, hidden_size)
,可选)— 可选地,您可以直接传递嵌入表示,而不是传递`input_ids`。当您希望在将`input_ids`索引转换为相关向量时获得比模型内部嵌入查找矩阵更多的控制时,这非常有用。 - output_attentions(《bool》类型,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的`attentions`。该参数只能在急切模式下使用,在图形模式下,将使用配置中的值。
- output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更详细的信息,请参阅返回张量下的hidden_states
。此参数只能在急切模式下使用,在图模式下将使用配置中的值。 - return_dict (
bool
, 可选) — 是否返回ModelOutput而不是普通元组。此参数可以在急切模式下使用,在图模式下值始终设为True。 - training (
bool
, 可选, 默认False
) — 是否将模型用于训练模式(一些模块,如dropout模块,在训练和评估之间的行为不同)。 - encoder_hidden_states (
tf.Tensor
的形状为(batch_size, sequence_length, hidden_size)
,可选) — 编码器最后层输出的序列隐藏状态。如果模型配置为解码器,则用于交叉注意力。 - encoder_attention_mask (
tf.Tensor
的形状为(batch_size, sequence_length)
,可选) — 避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。掩码值选择在[0, 1]
之间:- 对于未掩码的标记,掩码值为1;
- 对于掩码的标记,掩码值为0。
- past_key_values (
Tuple[Tuple[tf.Tensor]]
的长度为config.n_layers
,包含注意力块的开键和值隐藏状态。可用于加速解码。如果使用past_key_values
,则用户可以输入只包含形状为(batch_size, 1)
的最后decoder_input_ids
(那些没有将过去键值状态给定给此模型的),而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 - use_cache (
bool
, 可选, 默认为True
) — 如果设置为True
,则返回past_key_values
键值状态,可用于加速解码(参见past_key_values
)。训练期间设置False
,生成期间设置True
返回
transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions 或 tuple(tf.Tensor)
A transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions 或一个 tf.Tensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),根据配置(ElectraConfig)和输入包含各种元素。
-
last_hidden_state (
tf.Tensor
形状(batch_size, sequence_length, hidden_size)
) — 模型最后一层的输出序列隐藏状态。如果使用
past_key_values
,则只输出序列的最后一个隐藏状态,形状为(batch_size, 1, hidden_size)
。 -
past_key_values (
List[tf.Tensor]
,可选,通过传递use_cache=True
返回或当config.use_cache=True
)— 包含长度为config.n_layers
的tf.Tensor
列表,每个张量的形状为(2, batch_size, num_heads, sequence_length, embed_size_per_head)
。包含可以用于(请参阅
past_key_values
输入)以加快顺序解码的预计算隐藏状态(关注块中的键和值)。 -
hidden_states (
tuple(tf.FloatTensor)
,可选,通过传递output_hidden_states=True
返回或当config.output_hidden_states=True
)— 一个包含tf.Tensor
的元组(一个用于嵌入输出 + 一个用于每个层的输出)的形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
-
cross_attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器交叉注意力层的注意力权重,softmax 后,用于在交叉注意力头中计算加权平均值。
TFElectraModel 前向方法,覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFElectraModel
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = TFElectraModel.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> last_hidden_states = outputs.last_hidden_state
TFElectraForPreTraining
class transformers.TFElectraForPreTraining
< source >( config **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
Electra模型,顶部有二分类头,用于在预训练期间识别生成的标记。
虽然鉴别的生成器都可以加载到这个模型中,但只有鉴别器拥有正确的分类头,可以用于这个模型。
此模型继承自 TFPreTrainedModel。请检查父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)
此模型还是 keras.Model 的子类。可以将它作为常规的 TF 2.0 Keras 模型使用,并查阅 TF 2.0 文档,了解所有有关通用使用和行为的内容。
TensorFlow 中的模型和层在 transformers
中接受两种输入格式
- 所有输入作为关键字参数(类似于 PyTorch 模型),或者
- 所有输入作为一个列表、元组或字典作为第一个位置参数。
支持第二种格式的原因是,Keras 方法更喜欢以这种格式传递输入到模型和层。由于这种支持,当使用类似 model.fit()
的方法时,应该“自动”针对您进行操作 - 只需以 model.fit()
支持的任何格式传递您的输入和标签即可!但是,如果您想在外部使用 Keras 方法(如 fit()
和 predict()
)之外使用第二种格式,例如在创建自己的层或模型时,可以使用 Keras Functional
API,有三个可能性来收集第一个位置参数中的所有输入张量
- 只有一个带有
input_ids
且不包含其他内容的张量:model(input_ids)
- 一个长度可变的列表,包含一个或多个按照文档字符串中指定的顺序传入的输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个与文档字符串中给出的输入名称关联的一个或多个输入张量的字典:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
注意,当使用子类化创建模型和层时,您不必担心这些问题,因为您只需要像传递任何其他Python函数的输入一样传递输入即可!
调用
< source >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → transformers.models.electra.modeling_tf_electra.TFElectraForPreTrainingOutput or tuple(tf.Tensor)
参数
- input_ids (
Numpy数组
或tf.Tensor
,形状(批处理大小,序列长度)
) — vocabulary中输入序列标记的索引。 - attention_mask (
Numpy数组
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选)— 用于避免在填充词索引上执行关注的掩码。在[0, 1]
范围内选定的掩码值:- 1 表示未掩码的标记,
- 0 表示已掩码的标记。
- position_ids (
Numpy数组
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选)— 每个输入序列标记在位置嵌入中的位置的索引。选择范围在[0, config.max_position_embeddings - 1]
之间。 - head_mask (
Numpy数组
或tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选)— 用于取消自关注模块所选头的掩码。在[0, 1]
范围内选定的掩码值:- 1 表示头未掩码,
- 0 表示头已掩码。
- inputs_embeds (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,而不是传递input_ids
,您可以直接传递嵌入表示。如果您想要比模型内部嵌入查找矩阵更多的控制权来转换input_ids
索引到相关向量,这将是非常有用的。 - output_attentions (
bool
, optional) — 是否返回所有注意力层的时间序列。请参阅返回的时间序列中的attentions
以获取更多详细信息。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐状态。请参阅返回的时间序列中的hidden_states
以获取更多详细信息。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通的元组。在 eager 模式下可以使用此参数,在 graph 模式下,值始终设置为 True。 - training (
bool
, 可选, 默认为False
) — 是否以训练模式使用模型(一些模块如 dropout 模块在训练和评估模式下有不同的行为)。
返回
transformers.models.electra.modeling_tf_electra.TFElectraForPreTrainingOutput 或 tuple(tf.Tensor)
返回结果是 transformers.models.electra.modeling_tf_electra.TFElectraForPreTrainingOutput 或 tf.Tensor
的元组(在通过 return_dict=False
或当 config.return_dict=False
传递时),根据配置(ElectraConfig)和输入包含不同元素。
-
loss (可选,在提供
labels
时返回,形状为(1,)
的tf.Tensor
)— ELECTRA 目标的总损失。 -
logits (
tf.Tensor
,形状为(batch_size, sequence_length)
)— 头部的预测分数(SoftMax 之前每个标记的分数)。 -
hidden_states (
tuple(tf.Tensor)
,可选,在通过output_hidden_states=True
传递或当config.output_hidden_states=True
)——tf.Tensor
的元组(一个用于嵌入输出 + 一个用于每一层的输出),形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
TFElectraForPreTraining 的 forward 方法,覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> import tensorflow as tf
>>> from transformers import AutoTokenizer, TFElectraForPreTraining
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = TFElectraForPreTraining.from_pretrained("google/electra-small-discriminator")
>>> input_ids = tf.constant(tokenizer.encode("Hello, my dog is cute"))[None, :] # Batch size 1
>>> outputs = model(input_ids)
>>> scores = outputs[0]
TFElectraForMaskedLM
类 transformers.TFElectraForMaskedLM
< 源码 >( config **kwargs )
参数
- config (ElectraConfig) — 模型配置类,包含所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained() 方法来加载模型权重。
在顶部添加语言模型头的Electra模型。
尽管判别器和生成器都可以加载到这个模型中,但只有生成器是两个模型中唯一一个训练过掩码语言建模任务的模型。
此模型继承自 TFPreTrainedModel。请检查父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)
此模型还是 keras.Model 的子类。可以将它作为常规的 TF 2.0 Keras 模型使用,并查阅 TF 2.0 文档,了解所有有关通用使用和行为的内容。
TensorFlow 中的模型和层在 transformers
中接受两种输入格式
- 所有输入作为关键字参数(类似于 PyTorch 模型),或者
- 所有输入作为一个列表、元组或字典作为第一个位置参数。
支持第二种格式的原因是,Keras 方法更喜欢以这种格式传递输入到模型和层。由于这种支持,当使用类似 model.fit()
的方法时,应该“自动”针对您进行操作 - 只需以 model.fit()
支持的任何格式传递您的输入和标签即可!但是,如果您想在外部使用 Keras 方法(如 fit()
和 predict()
)之外使用第二种格式,例如在创建自己的层或模型时,可以使用 Keras Functional
API,有三个可能性来收集第一个位置参数中的所有输入张量
- 只有一个带有
input_ids
且不包含其他内容的张量:model(input_ids)
- 一个长度可变的列表,包含一个或多个按照文档字符串中指定的顺序传入的输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个与文档字符串中给出的输入名称关联的一个或多个输入张量的字典:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
注意,当使用子类化创建模型和层时,您不必担心这些问题,因为您只需要像传递任何其他Python函数的输入一样传递输入即可!
调用
< 源码 >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFMaskedLMOutput or tuple(tf.Tensor)
参数
- input_ids (
Numpy数组
或tf.Tensor
形如(batch_size, sequence_length)
) — 词汇库中输入序列标记的索引。可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (
Numpy 数组
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在填充标记索引上执行注意力的掩码。在[0, 1]
之间选择的掩码值:- 对于未标记的标记,值为 1;
- 对于标记的标记,值为 0。
- position_ids (
Numpy 数组
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的索引。选择的范围是[0, config.max_position_embeddings - 1]
。 - head_mask (
Numpy 数组
或tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块中选定的头无效的掩码。在[0, 1]
中选择的掩码值:- 1 表示未标记的头部;
- 0 表示标记的头部。
- inputs_embeds (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传入嵌入表示,而不是传递input_ids
,这在您想更多地控制如何将input_ids
指数转换为相关向量时非常有用,比模型的内部嵌入查找矩阵更灵活。 - output_attentions (
bool
, optional) — 是否返回所有注意力的张量。有关详细信息,请参阅返回的张量下的attentions
。此参数仅在 eager 模式下可用,在 graph 模式下将使用配置中的值。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回的张量下的hidden_states
。此参数仅在 eager 模式下可用,在 graph 模式下将使用配置中的值。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 对象而非普通元组。在 eager 模式下可以使用此参数,在图模式下该值总是设置为 True。 - training (
bool
, 可选, 默认值False
) — 是否将模型用于训练模式(一些模块,如 drop-out 模块,在训练和评估模式间有不同的行为)。 - labels (
tf.Tensor
shape 为(batch_size, sequence_length)
, 可选) — 用于计算掩码语言模型损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(参见input_ids
的文档字符串)索引设置为-100
的标记将被忽略(掩码),仅对索引在[0, ..., config.vocab_size]
范围内的标记计算损失
返回
transformers.modeling_tf_outputs.TFMaskedLMOutput 或 tuple(tf.Tensor)
transformers.modeling_tf_outputs.TFMaskedLMOutput 或一个由 tf.Tensor
组成的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),它包含各种按照配置( ElectraConfig )和输入的不同元素。
-
loss (
tf.Tensor
shape 为(n,)
, 可选,其中 n 为非掩码标签的数量,当提供标签时返回) — 掩码语言模型 (MLM) 损失。 -
logits (
tf.Tensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言模型头的预测得分(SoftMax之前的每个词汇单元的得分)。 -
hidden_states (
tuple(tf.Tensor)
,可选,在通过output_hidden_states=True
传递或当config.output_hidden_states=True
)——tf.Tensor
的元组(一个用于嵌入输出 + 一个用于每一层的输出),形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
TFElectraForMaskedLM的前向方法覆盖了__call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFElectraForMaskedLM
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-generator")
>>> model = TFElectraForMaskedLM.from_pretrained("google/electra-small-generator")
>>> inputs = tokenizer("The capital of France is [MASK].", return_tensors="tf")
>>> logits = model(**inputs).logits
>>> # retrieve index of [MASK]
>>> mask_token_index = tf.where((inputs.input_ids == tokenizer.mask_token_id)[0])
>>> selected_logits = tf.gather_nd(logits[0], indices=mask_token_index)
>>> predicted_token_id = tf.math.argmax(selected_logits, axis=-1)
>>> tokenizer.decode(predicted_token_id)
'paris'
TFElectraForSequenceClassification
类 transformers.TFElectraForSequenceClassification
< 源 >( config *inputs **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看from_pretrained()方法以加载模型权重。
ELECTRA 模型变压器,具有序列分类/回归头(在池化输出之上的线性层),例如用于 GLUE 任务。
此模型继承自 TFPreTrainedModel。请检查父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)
此模型还是 keras.Model 的子类。可以将它作为常规的 TF 2.0 Keras 模型使用,并查阅 TF 2.0 文档,了解所有有关通用使用和行为的内容。
TensorFlow 中的模型和层在 transformers
中接受两种输入格式
- 所有输入作为关键字参数(类似于 PyTorch 模型),或者
- 所有输入作为一个列表、元组或字典作为第一个位置参数。
支持第二种格式的原因是,Keras 方法更喜欢以这种格式传递输入到模型和层。由于这种支持,当使用类似 model.fit()
的方法时,应该“自动”针对您进行操作 - 只需以 model.fit()
支持的任何格式传递您的输入和标签即可!但是,如果您想在外部使用 Keras 方法(如 fit()
和 predict()
)之外使用第二种格式,例如在创建自己的层或模型时,可以使用 Keras Functional
API,有三个可能性来收集第一个位置参数中的所有输入张量
- 只有一个带有
input_ids
且不包含其他内容的张量:model(input_ids)
- 一个长度可变的列表,包含一个或多个按照文档字符串中指定的顺序传入的输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个与文档字符串中给出的输入名称关联的一个或多个输入张量的字典:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
注意,当使用子类化创建模型和层时,您不必担心这些问题,因为您只需要像传递任何其他Python函数的输入一样传递输入即可!
调用
< 来源 >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: 可选[bool] = None output_hidden_states: 可选[bool] = None return_dict: 可选[bool] = None labels: np.ndarray | tf.Tensor | None = None training: 可选[bool] = False ) → transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或 tuple(tf.Tensor)
参数
- input_ids (numpy数组或形状为(batch_size, sequence_length)的tf.Tensor) — 词汇表中的输入序列token的索引。
可以使用AutoTokenizer获取索引。请参阅PreTrainedTokenizer.call()和PreTrainedTokenizer.encode()了解详细信息。
- attention_mask (numpy数组或形状为(batch_size, sequence_length)的tf.Tensor,可选) — 用于避免在填充token索引上进行注意力的掩码。掩码值在
[0, 1]
范围内选择:- 对于未被掩码的token,值为1
- 对于被掩码的token,值为0
- position_ids (numpy数组或形状为(batch_size, sequence_length)的tf.Tensor,可选) — 每个输入序列token在位置嵌入中的位置索引。在范围
[0, config.max_position_embeddings - 1]
内选择。 - head_mask(
NumPy数组
或tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选)— 使自注意力模块选定的头部无效的掩码。掩码值在[0, 1]
范围内选择:- 1 表示头部 未掩码,
- 0 表示头部 已掩码。
- inputs_embeds(
tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果在内部嵌入查找矩阵之外,您想更精确地掌握如何将input_ids
索引转换为相关向量,则这很有用。 - output_attentions(
bool
,可选)— 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的attentions
。只能在 Eager 模式下使用此参数,在 Graph 模式下将使用配置中的值。 - output_hidden_states(《布尔值》,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的感知器中的 `hidden_states`。此参数只能在动态模式中使用,在图模式中,将使用配置中的值。
- return_dict(《布尔值》,可选)— 是否返回ModelOutput而不是普通的元组。此参数可用于动态模式,在图模式下,该值始终设置为True。
- training(《布尔值》,可选,默认为
False
)— 是否在训练模式下使用模型(一些模块,例如dropout模块,在训练和评估之间的行为不同)。 - labels (
tf.Tensor
of shape(batch_size,)
, optional) — 用于计算序列分类/回归损失的标签。索引应该在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels == 1
,则计算回归损失(均方损失),如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回
transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或 tuple(tf.Tensor)
transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一个 tf.Tensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
),包含根据配置(ElectraConfig)和输入的不同元素。
-
loss (
tf.Tensor
of shape(batch_size, )
, optional, 当提供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
)——tf.Tensor
的元组(一个用于嵌入输出 + 一个用于每一层的输出),形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
TFElectraForSequenceClassification 前向方法覆盖了特殊的 __call__
方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFElectraForSequenceClassification
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("bhadresh-savani/electra-base-emotion")
>>> model = TFElectraForSequenceClassification.from_pretrained("bhadresh-savani/electra-base-emotion")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> logits = model(**inputs).logits
>>> predicted_class_id = int(tf.math.argmax(logits, axis=-1)[0])
>>> model.config.id2label[predicted_class_id]
'joy'
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = TFElectraForSequenceClassification.from_pretrained("bhadresh-savani/electra-base-emotion", num_labels=num_labels)
>>> labels = tf.constant(1)
>>> loss = model(**inputs, labels=labels).loss
>>> round(float(loss), 2)
0.06
TFElectraForMultipleChoice
类 transformers.TFElectraForMultipleChoice
< source >( config *inputs **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不加载模型的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
ELECTRA 模型,顶部带有多项选择题头(池化输出上的线性层和softmax),例如用于RocStories/SWAG任务。
此模型继承自 TFPreTrainedModel。请检查父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)
此模型还是 keras.Model 的子类。可以将它作为常规的 TF 2.0 Keras 模型使用,并查阅 TF 2.0 文档,了解所有有关通用使用和行为的内容。
TensorFlow 中的模型和层在 transformers
中接受两种输入格式
- 所有输入作为关键字参数(类似于 PyTorch 模型),或者
- 所有输入作为一个列表、元组或字典作为第一个位置参数。
支持第二种格式的原因是,Keras 方法更喜欢以这种格式传递输入到模型和层。由于这种支持,当使用类似 model.fit()
的方法时,应该“自动”针对您进行操作 - 只需以 model.fit()
支持的任何格式传递您的输入和标签即可!但是,如果您想在外部使用 Keras 方法(如 fit()
和 predict()
)之外使用第二种格式,例如在创建自己的层或模型时,可以使用 Keras Functional
API,有三个可能性来收集第一个位置参数中的所有输入张量
- 只有一个带有
input_ids
且不包含其他内容的张量:model(input_ids)
- 一个长度可变的列表,包含一个或多个按照文档字符串中指定的顺序传入的输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个与文档字符串中给出的输入名称关联的一个或多个输入张量的字典:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
注意,当使用子类化创建模型和层时,您不必担心这些问题,因为您只需要像传递任何其他Python函数的输入一样传递输入即可!
调用
< source >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput or tuple(tf.Tensor)
参数
- input_ids (
Numpy array
ortf.Tensor
of shape(batch_size, num_choices, sequence_length)
) — 词汇中输入序列标记的索引。索引可以通过使用 AutoTokenizer 获取。详细信息请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask(
Numpy数组
或tf.Tensor
,形状为(batch_size, num_choices, sequence_length)
,可选)——用于避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选定:- 1表示未屏蔽的标记,
- 0表示屏蔽的标记。
- position_ids(
Numpy数组
或tf.Tensor
,形状为(batch_size, num_choices, sequence_length)
,可选)——每个输入序列标记在位置嵌入中的位置索引。选定范围在[0, config.max_position_embeddings - 1]
之间。 - head_mask(
Numpy数组
或tf.Tensor
,形状为(num_heads,
或(num_layers, num_heads)
,可选)——掩码,用于抹除自注意力模块中选定的头。掩码值在[0, 1]
中选定:- 1表示未被屏蔽的头,
- 0表示被屏蔽的头。
- inputs_embeds (形状为
(batch_size, num_choices, sequence_length, hidden_size)
的tf.Tensor
,可选) — 可选地,而不是传递input_ids
,您可以选择直接传递嵌入表示。如果您希望比模型内部嵌入查找矩阵更好地控制如何将input_ids
索引转换为相关向量,则此选项很有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量中的attentions
。此参数只能在急切模式中使用,在图模式下将使用配置中的值。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量中的hidden_states
。此参数只能在急切模式中使用,在图模式下将使用配置中的值。 - return_dict (
bool
,可选)— 是否返回 ModelOutput 而不是普通元组。在 eager 模式下可以使用此参数,在 graph 模式下总是将其设置为 True。 - training (
bool
,可选,默认为False
)— 是否以训练模式使用模型(某些模块如 dropout 模块在训练和评估之间的行为不同)。 - labels (
tf.Tensor
形状为(batch_size,)
,可选)— 用于计算多选分类损失的标签。索引应在[0, ..., num_choices]
范围内,其中num_choices
为输入张量的第二维大小。 (参见上面的input_ids
)
返回
transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput 或 tuple(tf.Tensor)
transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput 或一个 tf.Tensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),它包含各种元素,具体取决于配置(ElectraConfig)和输入。
-
loss (
tf.Tensor
形状为 (batch_size, ),可选,当提供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
)——tf.Tensor
的元组(一个用于嵌入输出 + 一个用于每一层的输出),形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
TFElectraForMultipleChoice 前向方法,重写了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFElectraForMultipleChoice
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = TFElectraForMultipleChoice.from_pretrained("google/electra-small-discriminator")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="tf", padding=True)
>>> inputs = {k: tf.expand_dims(v, 0) for k, v in encoding.items()}
>>> outputs = model(inputs) # batch size is 1
>>> # the linear classifier still needs to be trained
>>> logits = outputs.logits
TFElectraForTokenClassification
类别 transformers.TFElectraForTokenClassification
< 来源 >( config **kwargs )
参数
- config (ElectraConfig) — 包含所有模型参数的模型配置类。使用配置文件进行初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
带token分类头的Electra模型。
判别器和生成器都可能加载到这个模型中。
此模型继承自 TFPreTrainedModel。请检查父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)
此模型还是 keras.Model 的子类。可以将它作为常规的 TF 2.0 Keras 模型使用,并查阅 TF 2.0 文档,了解所有有关通用使用和行为的内容。
TensorFlow 中的模型和层在 transformers
中接受两种输入格式
- 所有输入作为关键字参数(类似于 PyTorch 模型),或者
- 所有输入作为一个列表、元组或字典作为第一个位置参数。
支持第二种格式的原因是,Keras 方法更喜欢以这种格式传递输入到模型和层。由于这种支持,当使用类似 model.fit()
的方法时,应该“自动”针对您进行操作 - 只需以 model.fit()
支持的任何格式传递您的输入和标签即可!但是,如果您想在外部使用 Keras 方法(如 fit()
和 predict()
)之外使用第二种格式,例如在创建自己的层或模型时,可以使用 Keras Functional
API,有三个可能性来收集第一个位置参数中的所有输入张量
- 只有一个带有
input_ids
且不包含其他内容的张量:model(input_ids)
- 一个长度可变的列表,包含一个或多个按照文档字符串中指定的顺序传入的输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个与文档字符串中给出的输入名称关联的一个或多个输入张量的字典:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
注意,当使用子类化创建模型和层时,您不必担心这些问题,因为您只需要像传递任何其他Python函数的输入一样传递输入即可!
调用
< source >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFTokenClassifierOutput or tuple(tf.Tensor)
参数
- input_ids (
Numpy 数组
或tf.Tensor
形状为(batch_size, sequence_length)
) — 输入序列词汇中的标记索引。索引可以通过使用 AutoTokenizer 获取。详细信息请参考 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (
Numpy 数组
或tf.Tensor
形状为(batch_size, sequence_length)
,可选) — 避免在填充 Token 的索引上执行关注。选择在[0, 1]
区间内的掩码值:- 对于 未掩码 的 Token,值为 1,
- 对于 掩码 的 Token,值为 0。
- position_ids (
Numpy 数组
或tf.Tensor
形状为(batch_size, sequence_length)
,可选) — 每个输入序列 Token 在位置嵌入中的位置索引。在[0, config.max_position_embeddings - 1]
的范围内选择。 - head_mask (
Numpy array
或tf.Tensor
形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于取消自我注意力模块中选中头部的掩码。掩码值在[0, 1]
之间选择:- 1 表示头部未被 掩码,
- 0 表示头部已被 掩码。
- inputs_embeds (
tf.Tensor
形状为(batch_size, sequence_length, hidden_size)
,可选) — 如果不是传递input_ids
,可以改为直接传递嵌入表示。当你想要比模型内部的嵌入查找矩阵有更多控制权,将input_ids
索引用于关联向量时很有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。此参数只能在急切模式下使用,在图模式下将使用配置中的值。 - output_hidden_states (
布尔值
, 可选) — 是否返回所有层的隐藏状态。更多详情请参阅返回张量下方的hidden_states
。此参数只能在急切模式下使用,在图模式下将使用配置中的值。 - return_dict (
布尔值
, 可选) — 是否返回 ModelOutput 而不是纯元组。此参数可以在急切模式下使用,在图模式下值始终为 True。 - training (
布尔值
, 可选,默认值False
) — 是否使用模型在训练模式(某些模块如dropout模块在训练和评估模式间可能有不同的行为)。 - labels (
tf.Tensor
的形状为(batch_size, sequence_length)
,可选) — 计算词分类损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。
返回
transformers.modeling_tf_outputs.TFTokenClassifierOutput 或 tuple(tf.Tensor)
A transformers.modeling_tf_outputs.TFTokenClassifierOutput 或一个包含 tf.Tensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
),根据配置(ElectraConfig)和输入包含不同的元素。
-
loss (
tf.Tensor
的形状为(n,)
,可选,其中 n 是未掩码标签的数量,当提供了labels
时返回) — 分类损失。 -
logits (
tf.Tensor
的形状为(batch_size, sequence_length, config.num_labels)
) — 分类分数(SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
,可选,在通过output_hidden_states=True
传递或当config.output_hidden_states=True
)——tf.Tensor
的元组(一个用于嵌入输出 + 一个用于每一层的输出),形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
TFElectraForTokenClassification 的前向方法覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFElectraForTokenClassification
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("bhadresh-savani/electra-base-discriminator-finetuned-conll03-english")
>>> model = TFElectraForTokenClassification.from_pretrained("bhadresh-savani/electra-base-discriminator-finetuned-conll03-english")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="tf"
... )
>>> logits = model(**inputs).logits
>>> predicted_token_class_ids = tf.math.argmax(logits, axis=-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t] for t in predicted_token_class_ids[0].numpy().tolist()]
>>> predicted_tokens_classes
['B-LOC', 'B-ORG', 'O', 'O', 'O', 'O', 'O', 'B-LOC', 'O', 'B-LOC', 'I-LOC']
TFElectraForQuestionAnswering
类 transformers.TFElectraForQuestionAnswering
< source >( config *inputs **kwargs )
参数
- config (ElectraConfig) — 包含所有模型参数的配置类。使用配置文件初始化不加载与模型相关的权重,只有配置。查看from_pretrained()方法来加载模型权重。
带有span分类头的Electra模型,用于提取式问答任务(如SQuAD),在隐藏状态输出上叠加线性层来计算<代码>span起始logits代码>和<代码>span结束logits代码>。
此模型继承自 TFPreTrainedModel。请检查父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)
此模型还是 keras.Model 的子类。可以将它作为常规的 TF 2.0 Keras 模型使用,并查阅 TF 2.0 文档,了解所有有关通用使用和行为的内容。
TensorFlow 中的模型和层在 transformers
中接受两种输入格式
- 所有输入作为关键字参数(类似于 PyTorch 模型),或者
- 所有输入作为一个列表、元组或字典作为第一个位置参数。
支持第二种格式的原因是,Keras 方法更喜欢以这种格式传递输入到模型和层。由于这种支持,当使用类似 model.fit()
的方法时,应该“自动”针对您进行操作 - 只需以 model.fit()
支持的任何格式传递您的输入和标签即可!但是,如果您想在外部使用 Keras 方法(如 fit()
和 predict()
)之外使用第二种格式,例如在创建自己的层或模型时,可以使用 Keras Functional
API,有三个可能性来收集第一个位置参数中的所有输入张量
- 只有一个带有
input_ids
且不包含其他内容的张量:model(input_ids)
- 一个长度可变的列表,包含一个或多个按照文档字符串中指定的顺序传入的输入张量:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一个与文档字符串中给出的输入名称关联的一个或多个输入张量的字典:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
注意,当使用子类化创建模型和层时,您不必担心这些问题,因为您只需要像传递任何其他Python函数的输入一样传递输入即可!
调用
< source >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None start_positions: np.ndarray | tf.Tensor | None = None end_positions: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput or tuple(tf.Tensor)
参数
- input_ids (
Numpy array
ortf.Tensor
of shape(batch_size, sequence_length)
) — 输入序列词汇中的token索引。索引可以通过使用 AutoTokenizer 来获取。有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (
Numpy array
或tf.Tensor
形状为(batch_size, sequence_length)
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值在选择[0, 1]
:- 1 表示 未掩码 的标记,
- 0 表示 掩码 的标记。
- position_ids (
Numpy array
或tf.Tensor
形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的索引。选择在范围[0, config.max_position_embeddings - 1]
。 - head_mask (
Numpy array
或tf.Tensor
形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 使自我注意力模块中选定的头无效的掩码。掩码值在选择[0, 1]
:- 1 表示 未掩码的头,
- 0 表示 掩码的头。
- inputs_embeds (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
, optional) —— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要比模型内部嵌入查找矩阵有更多控制权,来转换input_ids
索引到相关向量,这种方法很有用。 - output_attentions (
bool
, optional) —— 是否返回所有注意力层的注意力张量。更详细的内容请参阅返回张量下的attentions
。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - output_hidden_states (
bool
, optional) —— 是否返回所有层的隐藏状态。更详细的内容请参阅返回张量下的hidden_states
。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - return_dict (
bool
, 可选) — 是否返回模型输出而不是一个普通元组。此参数可以在 eager 模式下使用,在 graph 模式下该值始终将被设置为 True。 - training (
bool
, 可选,默认值False
) — 是否使用模型进行训练模式(一些模块,如 dropout 模块,在训练和评估之间存在不同行为)。 - start_positions (
tf.Tensor
形状(batch_size,)
, 可选) — 标记的 span 起始位置(索引)的标签,用于计算标记类别的损失。位置将被夹持到序列长度(sequence_length
)。序列之外的座位不参与计算损失。 - end_positions (
tf.Tensor
,形状为(batch_size,)
,可选) — 计算标记跨度丢失的端点位置(索引)标签。位置会夹在序列长度(sequence_length
)内。序列之外的位置在计算损失时不会被考虑。
返回
transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或 tuple(tf.Tensor)
A transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或一个包含 tf.Tensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
),它包含取决于配置(ElectraConfig)和输入的各种元素。
-
loss (
tf.Tensor
,形状(batch_size, )
,可选,当提供start_positions
和end_positions
时返回) — 总跨度提取丢失是开始和结束位置的交叉熵之和。 -
start_logits (
tf.Tensor
,形状(batch_size, sequence_length)
) — 跨度起始得分(在 SoftMax 之前)。 -
end_logits (
tf.Tensor
,形状(batch_size, sequence_length)
) — 跨度终止得分(在 SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
,可选,在通过output_hidden_states=True
传递或当config.output_hidden_states=True
)——tf.Tensor
的元组(一个用于嵌入输出 + 一个用于每一层的输出),形状为(batch_size, sequence_length, hidden_size)
。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(tf.Tensor)
,可选,通过传递output_attentions=True
返回或当config.output_attentions=True
)— 一个包含tf.Tensor
的元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
TFElectraForQuestionAnswering 前向方法,覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFElectraForQuestionAnswering
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("bhadresh-savani/electra-base-squad2")
>>> model = TFElectraForQuestionAnswering.from_pretrained("bhadresh-savani/electra-base-squad2")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="tf")
>>> outputs = model(**inputs)
>>> answer_start_index = int(tf.math.argmax(outputs.start_logits, axis=-1)[0])
>>> answer_end_index = int(tf.math.argmax(outputs.end_logits, axis=-1)[0])
>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens)
'a nice puppet'
FlaxElectraModel
class transformers.FlaxElectraModel
< source >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 模型配置类,包含所有模型参数。使用配置文件初始化时不会加载模型相关的权重,只会加载配置。请参阅from_pretrained()方法加载模型权重。
这是一个基本的Electra模型Transformer,输出原始隐藏状态,顶部没有任何特定的头。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< 来源 >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params : dict = None dropout_rng : PRNGKey = None train : bool = False output_attentions : Optional = None output_hidden_states : Optional = None return_dict : Optional = None past_key_values : dict = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
形状(batch_size, sequence_length)
) —— 输入序列令牌在词汇表中的索引。索引可以使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
形状(batch_size, sequence_length)
,可选) —— 用于避免对填充标记索引执行注意力的掩码。掩码值在[0, 1]
中选择:- 1对应于未掩码的标记,
- 0对应于掩码的标记。
- token_type_ids (
numpy.ndarray
形状(batch_size, sequence_length)
,可选) —— 分段标记索引,用于指示输入的第一和第二个部分。索引在[0, 1]
中选择:- 0对应于句子A标记,
- 1对应于句子B标记。
- position_ids (形状为
(batch_size, sequence_length)
的numpy.ndarray
,可选)每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
内选择。 - head_mask (形状为
(batch_size, sequence_length)
的numpy.ndarray
,可选
)用于取消选中注意力模块选中头部的掩码。掩码值在[0, 1]
中选择: - return_dict (
bool
,可选)指定是否返回一个 ModelOutput 而非一个普通元组。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 tuple(torch.FloatTensor)
transformers.modeling_flax_outputs.FlaxBaseModelOutput 或一个由 torch.FloatTensor
组成的元组,其中包含各种元素,取决于配置(ElectraConfig)和输入(如果 return_dict=False
未通过或者当 config.return_dict=False
)。
-
last_hidden_state (形状为
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
)模型最后层的隐藏状态序列。 -
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraModel
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraModel.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
FlaxElectraForPreTraining
类 transformers.FlaxElectraForPreTraining
< source >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只有配置。请查看from_pretrained()方法来加载模型权重。
Electra模型,顶部有二分类头,用于在预训练期间识别生成的标记。
建议将该判别器检查点加载到该模型中。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< source >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → transformers.models.electra.modeling_flax_electra.FlaxElectraForPreTrainingOutput
or tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的numpy.ndarray)— 输入序列token在词汇表中的索引.索引可以通过使用AutoTokenizer获得。有关详细信息,请参阅PreTrainedTokenizer.encode()和PreTrainedTokenizer.call()。
- attention_mask (形状为
(batch_size, sequence_length)
的numpy.ndarray,可选)— 用于避免对填充token索引进行注意力的掩码。掩码值在[0, 1]
中选择:- 1 对应于未掩码的token,
- 0 对应于掩码的token。
- token_type_ids (形状为
(batch_size, sequence_length)
的numpy.ndarray,可选)— 用于指示输入的第一部分和第二部分的段token索引。索引选择在[0, 1]
中: - position_ids (
numpy.ndarray
形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。在[0, config.max_position_embeddings - 1]
的范围内选择。 - head_mask (
numpy.ndarray
形状为(batch_size, sequence_length)
,optional) -- 空白化注意力模块所选头部。掩码值在
[0, 1]` 的范围内选择:
- return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通的元组。
返回
transformers.models.electra.modeling_flax_electra.FlaxElectraForPreTrainingOutput
或 tuple(torch.FloatTensor)
transformers.models.electra.modeling_flax_electra.FlaxElectraForPreTrainingOutput
或一个包含 torch.FloatTensor
的元组(如果传递了 return_dict=False
或者当 config.return_dict=False
时),它包含各种依赖配置(ElectraConfig)和输入的元素。
-
logits (
jnp.ndarray
形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测得分 (在 SoftMax 之前,每个词汇表标记的得分)。 -
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraForPreTraining
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraForPreTraining.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.logits
FlaxElectraForCausalLM
类 transformers.FlaxElectraForCausalLM
< 源 >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化时,不加载与模型关联的权重,只有配置。查看 from_pretrained() 方法以加载模型权重。
在顶部具有语言建模头(隐藏状态输出上的线性层)的 Electra 模型(例如,用于自回归任务)。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< 来源 >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。索引可以使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 及 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
of shape(batch_size, sequence_length)
, optional) — 避免对填充标记索引执行注意力的掩码。所选掩码值在[0, 1]
之间:- 1 表示未掩码的标记,
- 0 表示掩码的标记。
- token_type_ids (
numpy.ndarray
of shape(batch_size, sequence_length)
, optional) — 段标记索引,用于指示输入的第一和第二部分。索引选择在[0, 1]
之间:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
- position_ids (
numpy.ndarray
of shape(batch_size, sequence_length)
, optional) —— 每个输入序列token在位置嵌入中的位置索引。在[0, config.max_position_embeddings - 1]
范围内选择。 - head_mask (
numpy.ndarray
of shape(batch_size, sequence_length)
,optional
—— 取消注意模块选择头部的掩码。掩码值在[0, 1]
范围内选择: - return_dict (
bool
, optional) —— 是否返回ModelOutput
而不是纯元组。
返回
transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
A transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或作为一个元组 torch.FloatTensor
(如果通过 return_dict=False
或 config.return_dict=False
) 包含各种配置(例如 ElectraConfig
)和输入的元素。
-
logits (
jnp.ndarray
形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测得分 (在 SoftMax 之前,每个词汇表标记的得分)。 -
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
-
cross_attentions (
tuple(jnp.ndarray)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —— 一个jnp.ndarray
的元组(每个层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力softmax之后的交叉注意力权重,用于在交叉注意力头部中进行加权的平均值计算。
-
past_key_values (
tuple(tuple(jnp.ndarray))
, 可选, 当传递参数use_cache=True
或者当config.use_cache=True
时返回) — 一个长度为config.n_layers
的jnp.ndarray
元组的元组,每个元组包含自注意力层和交叉注意力层的缓存键值状态,若模型在编码器-解码器设置中Sunday时使用。只有在config.is_decoder = True
时才相关。包含可以用于(请参阅
past_key_values
输入)以加快顺序解码的预计算隐藏状态(关注块中的键和值)。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraForCausalLM.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)
>>> # retrieve logts for next token
>>> next_token_logits = outputs.logits[:, -1]
FlaxElectraForMaskedLM
类 transformers.FlaxElectraForMaskedLM
< source >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 包含所有模型参数的模型配置类。使用配置文件初始化时不会加载与模型关联的权重,只加载配置。请参阅 from_pretrained() 方法来加载模型权重。
在顶部带有 语言建模
头的 Electra 模型。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< source >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxMaskedLMOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
形状(batch_size, sequence_length)
) —— 输入序列词汇中的标记索引。可以通过 AutoTokenizer 获取索引。详情请参阅PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
形状(batch_size, sequence_length)
, 可选) — 用于避免对填充标记索引执行注意力的掩码。所选掩码值在[0, 1]
范围内:- 1 表示 未掩码 的标记,
- 0 表示 掩码 的标记。
- token_type_ids (
numpy.ndarray
形状(batch_size, sequence_length)
, 可选) —— 用于指示输入的前后部分段标记索引。索引选择在[0, 1]
范围内:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
- position_ids (
numpy.ndarray
of shape(batch_size, sequence_length)
, optional) — 每个输入序列单词在位置嵌入中的位置索引。选取范围[0, config.max_position_embeddings - 1]
。 - head_mask (
numpy.ndarray
of shape(batch_size, sequence_length)
,optional) -- 用于屏蔽注意力模块所选头的掩码。掩码值在
[0, 1]`范围内选择:
- return_dict (
bool
, optional) — 是否返回一个 ModelOutput 而不是普通的元组。
返回
transformers.modeling_flax_outputs.FlaxMaskedLMOutput 或 tuple(torch.FloatTensor)
transformers.modeling_flax_outputs.FlaxMaskedLMOutput 或一个包含多种元素的元组(取决于配置(如 ElectraConfig)和输入),如果传递 return_dict=False
或当 config.return_dict=False
)时。
-
logits (
jnp.ndarray
形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测得分 (在 SoftMax 之前,每个词汇表标记的得分)。 -
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraForMaskedLM
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraForMaskedLM.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("The capital of France is [MASK].", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxElectraForSequenceClassification
类 transformers.FlaxElectraForSequenceClassification
< 源代码 >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型的权重,只有配置。请查阅from_pretrained() 方法以加载模型权重。
在顶部具有序列分类/回归头的Electra模型transformer(例如用于GLUE任务,其上为池化输出的线性层)。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< 源代码 >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
of shape(batch_size, sequence_length)
) —词汇表中输入序列标记的索引。索引可以使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
of shape(batch_size, sequence_length)
, optional) —避免在填充标记索引上执行注意力的遮罩。遮罩值选择在[0, 1]
范围内:- 1 表示 未遮罩 的标记;
- 0 表示 遮罩 的标记。
- token_type_ids (
numpy.ndarray
of shape(batch_size, sequence_length)
, optional) —指示输入的前后部分的段标记索引。索引在[0, 1]
范围内:- 0 表示 句子 A 标记;
- 1 表示 句子 B 标记。
- position_ids (
numpy.ndarray
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。选择范围在[0, config.max_position_embeddings - 1]
之间。 - head_mask (
numpy.ndarray
of shape(batch_size, sequence_length)
,optional
) -- 用于取消激活注意力模块选定头部的掩码。掩码值在[0, 1]
之间选择: - return_dict (
bool
, optional) — 是否以ModelOutput形式返回,而不是普通的元组。
返回
transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或 tuple(torch.FloatTensor)
输出为 transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或一个包含torch.FloatTensor
的元组(如果传递 return_dict=False
或 config.return_dict=False
),其包含的元素取决于配置(ElectraConfig)和输入。
-
logits (
jnp.ndarray
of shape(batch_size, config.num_labels)
) — 分类(或回归,如果 config.num_labels==1)分数(在 SoftMax 之前)。 -
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraForSequenceClassification.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxElectraForMultipleChoice
类 transformers.FlaxElectraForMultipleChoice
< 源 >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化时不加载模型关联的权重,只加载配置。查看from_pretrained() 方法以加载模型权重。
ELECTRA 模型,顶部带有多项选择题头(池化输出上的线性层和softmax),例如用于RocStories/SWAG任务。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< source >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput или tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, num_choices, sequence_length)
的numpy.ndarray
) — 词汇表中输入序列标记的索引。可以使用 AutoTokenizer 获取索引。请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 了解详细信息。
- attention_mask (形状为
(batch_size, num_choices, sequence_length)
的numpy.ndarray
,可选) — 避免在填充标记索引上进行注意力的掩码。掩码值在[0, 1]
中选择:- 1 代表 未掩码 的标记,
- 0 代表 掩码 的标记。
- token_type_ids (形状为
(batch_size, num_choices, sequence_length)
的numpy.ndarray
,可选) — 段标记索引,用于指示输入的第一和第二部分。索引在[0, 1]
中选择:- 0 代表 句子 A 标记,
- 1 代表 句子 B 标记。
- position_ids (
numpy.ndarray
的形状为(batch_size, num_choices, sequence_length)
,可选)- 表示每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
内选择。 - head_mask (
numpy.ndarray
的形状为(batch_size, num_choices, sequence_length)
,可选
) -- 取消选定头的注意力模块的掩码。掩码值在[0, 1]
之间选择: - return_dict (
bool
,可选) - 是否返回ModelOutput而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput或tuple(torch.FloatTensor)
A transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput或一个包含torch.FloatTensor
的元组(如果传递了return_dict=False
或当config.return_dict=False
时),根据配置(ElectraConfig)和输入包含各种元素。
-
logits (
jnp.ndarray
的形状为(batch_size, num_choices)
) - num_choices 是输入张量的第二维。(参见上面的 input_ids)。分类得分(在 SoftMax 之前)。
-
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraForMultipleChoice
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraForMultipleChoice.from_pretrained("google/electra-small-discriminator")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="jax", padding=True)
>>> outputs = model(**{k: v[None, :] for k, v in encoding.items()})
>>> logits = outputs.logits
FlaxElectraForTokenClassification
类 transformers.FlaxElectraForTokenClassification
< source >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不加载模型相关的权重,只加载配置。请查看 from_pretrained() 方法来加载模型权重。
带token分类头的Electra模型。
判别器和生成器都可能加载到这个模型中。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< source >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxTokenClassifierOutput or tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
形状为(batch_size, sequence_length)
) ——词汇表中的输入序列标记索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
形状为(batch_size, sequence_length)
, 可选) ——避免在填充标记索引上执行注意力操作的遮罩。选定的遮罩值在[0, 1]
之间:- 1 表示 未遮罩 的标记,
- 0 表示 遮罩 的标记。
- token_type_ids (
numpy.ndarray
形状为(batch_size, sequence_length)
, 可选) ——标记类型索引,用于指示输入的第一和第二部分。索引选在[0, 1]
之间:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
- position_ids (
numpy.ndarray
的形状为(batch_size, sequence_length)
, 可选) — 每个输入序列标记的位置的索引,位于位置嵌入中。在[0, config.max_position_embeddings - 1]
范围内选择。 - head_mask (
numpy.ndarray
的形状为(batch_size, sequence_length)
,可选) -- 用于失效注意模块中选定头的掩码。掩码值在
[0, 1]` 范围内选择:- 1 表示头没有被 掩码化,
- 0 表示头被 掩码化。
- return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通的元组。
返回
transformers.modeling_flax_outputs.FlaxTokenClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxTokenClassifierOutput 或一个由 torch.FloatTensor
组成的元组(如果传递了 return_dict=False
或 config.return_dict=False
)取决于配置(ElectraConfig)和输入。
-
logits (
jnp.ndarray
的形状为(batch_size, sequence_length, config.num_labels)
) — 分类得分(在 SoftMax 之前)。 -
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraForTokenClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraForTokenClassification.from_pretrained("google/electra-small-discriminator")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxElectraForQuestionAnswering
类 transformers.FlaxElectraForQuestionAnswering
< 源 >( config: ElectraConfig input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (ElectraConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。检查from_pretrained()方法以加载数据模型权重。
搭载跨度分类头部的ELECTRA模型,用于SQuAD等抽式问答任务(在隐藏状态输出之上增加线性层以计算跨度开始logits
和跨度结束logits
)。
此模型继承自FlaxPreTrainedModel。请查看超类文档,以了解库为所有模型实现的通用方法(如下载、保存和将PyTorch模型的权重转换为库格式)。
此模型也是Flax Linen flax.nn.Module子类。将其用作常规Flax模块,并参考Flax文档以了解有关概况和行为的所有相关信息。
最后,此模型支持自动继承的JAX功能,例如
__call__方法
< 源代码 >( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: PRNGKey = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
形状为(batch_size, sequence_length)
) — 输入序列单词在词汇表中的索引。索引可以使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
形状为(batch_size, sequence_length)
,可选) — 避免在填充令牌索引上执行注意力的掩码。掩码值选择在[0, 1]
:- 1 表示 未掩码 令牌,
- 0 表示 掩码 令牌。
- token_type_ids (
numpy.ndarray
形状为(batch_size, sequence_length)
,可选) — 用于指示输入的第一和第二部分的段令牌索引。索引选择在[0, 1]
:- 0 对应于 A 句的令牌,
- 1 对应于 B 句的令牌。
- position_ids (
numpy.ndarray
形状为(batch_size, sequence_length)
, 可选) — 每个输入序列标记的位位置索引嵌入。在范围内[0, config.max_position_embeddings - 1]
选择。 - head_mask (
numpy.ndarray
形状为(batch_size, sequence_length)
, 可选) — 可以取消激活注意力模块选择的头部。在[0, 1]` 中选择掩码值:
- 1 表示头部 未掩码;
- 0 表示头部 掩码。
- return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通的元组。
返回
transformers.modeling_flax_outputs.FlaxQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
返回 transformers.modeling_flax_outputs.FlaxQuestionAnsweringModelOutput 或一个由 torch.FloatTensor
组成的元组(如果传入或配置 return_dict=False
),具体取决于配置(ElectraConfig)和输入。
-
start_logits (
jnp.ndarray
形状为(batch_size, sequence_length)
) — 段开始分数(在 SoftMax 之前)。 -
end_logits (
jnp.ndarray
形状为(batch_size, sequence_length)
) — 段结束分数(在 SoftMax 之前)。 -
hidden_states (
tuple(jnp.ndarray)
, 可选,当output_hidden_states=True
被传递或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个是嵌入层的输出,另一个是每个层的输出)。在每个层的输出和初始嵌入输出处的模型隐藏状态。
-
attentions (
tuple(jnp.ndarray)
, 可选,当output_attentions=True
被传递或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。注意力 softmax 后的注意力权重,用于在自注意力头中计算加权平均值。
FlaxElectraPreTrainedModel
的前向方法覆盖了特殊方法__call__
。
虽然需要在函数内部定义前向传递的配方,但在之后应该调用Module
实例而不是这个,因为前者负责运行前处理和后处理步骤,而后者则默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxElectraForQuestionAnswering
>>> tokenizer = AutoTokenizer.from_pretrained("google/electra-small-discriminator")
>>> model = FlaxElectraForQuestionAnswering.from_pretrained("google/electra-small-discriminator")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="jax")
>>> outputs = model(**inputs)
>>> start_scores = outputs.start_logits
>>> end_scores = outputs.end_logits