Transformers 4.37 中文文档(三十一)(3)https://developer.aliyun.com/article/1564899
ErnieForMultipleChoice
class transformers.ErnieForMultipleChoice
( config )
参数
config
(ErnieConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
Ernie 模型在顶部具有多选分类头(在池化输出的顶部和 softmax 上的线性层),例如用于 RocStories/SWAG 任务。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型还是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None task_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MultipleChoiceModelOutput or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, num_choices, sequence_length)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(形状为(batch_size, num_choices, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的蒙版。蒙版值选在[0, 1]
中:
- 对于
未屏蔽
的标记, - 对于
屏蔽
的标记为 0。
- 什么是注意力蒙版?
token_type_ids
(形状为(batch_size, num_choices, sequence_length)
的torch.LongTensor
,可选)— 段标记索引,指示输入的第一部分和第二部分。索引选在[0, 1]
中:
- 0 对应于句子 A标记,
- 1 对应于 句子 B 标记。
- 什么是 token 类型 ID?
task_type_ids
(torch.LongTensor
of shape(batch_size, num_choices, sequence_length)
, optional) — 任务类型嵌入是一种特殊的嵌入,用于表示不同任务的特征,例如基于单词的预训练任务、基于结构的预训练任务和基于语义的预训练任务。我们为每个任务分配一个task_type_id
,task_type_id
在范围[0, config.task_type_vocab_size-1]
中。position_ids
(torch.LongTensor
of shape(batch_size, num_choices, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]
:
- 1 表示头部是
not masked
, - 0 表示头部是
masked
。
inputs_embeds
(torch.FloatTensor
of shape(batch_size, num_choices, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。labels
(torch.LongTensor
of shape(batch_size,)
, optional) — 用于计算多项选择分类损失的标签。索引应在[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
时)包含各种元素,这取决于配置(ErnieConfig)和输入。
loss
(torch.FloatTensor
of shape (1,), optional, 当提供labels
时返回) — 分类损失。logits
(torch.FloatTensor
of shape(batch_size, num_choices)
) — num_choices 是输入张量的第二维的大小。(参见 input_ids 上面)。
分类得分(SoftMax 之前)。hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入的输出 + 每一层的输出)。
模型在每一层输出处的隐藏状态以及可选的初始嵌入输出。attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
ErnieForMultipleChoice 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, ErnieForMultipleChoice >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("nghuyong/ernie-1.0-base-zh") >>> model = ErnieForMultipleChoice.from_pretrained("nghuyong/ernie-1.0-base-zh") >>> 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
ErnieForTokenClassification
class transformers.ErnieForTokenClassification
( config )
参数
config
(ErnieConfig)- 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
Ernie 模型在顶部带有一个标记分类头(隐藏状态输出的线性层),例如用于命名实体识别(NER)任务。
此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以了解所有与一般用法和行为相关的事项。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None task_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:
- 1 表示
未被掩码
的标记, - 0 表示
被掩码
的标记。
- 什么是注意力掩码?
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 段标记索引,指示输入的第一部分和第二部分。索引在[0, 1]
中选择:
- 0 表示句子 A标记,
- 1 表示句子 B标记。
- 什么是标记类型 ID?
task_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 任务类型嵌入是一种特殊嵌入,用于表示不同任务的特征,例如基于词的预训练任务、基于结构的预训练任务和基于语义的预训练任务。我们为每个任务分配一个task_type_id
,task_type_id
在范围[0, config.task_type_vocab_size-1]
内。position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]
范围内:
- 1 表示头部是
not masked
, - 0 表示头部是
masked
。
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 可选地,您可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。output_hidden_states
(bool
,optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。return_dict
(bool
,optional) — 是否返回 ModelOutput 而不是普通元组。labels
(torch.LongTensor
,形状为(batch_size, sequence_length)
,optional) — 用于计算标记分类损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。
ErnieForTokenClassification 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
ErnieForQuestionAnswering
class transformers.ErnieForQuestionAnswering
( config )
参数
config
(ErnieConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
Ernie 模型在顶部具有一个用于提取问答任务的跨度分类头,例如 SQuAD(在隐藏状态输出的顶部有线性层,用于计算span start logits
和span end logits
)。
此模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None task_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 )
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?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标记。
- 什么是标记类型 ID?
task_type_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 任务类型嵌入是一种特殊嵌入,用于表示不同任务的特征,例如基于词的预训练任务、基于结构的预训练任务和基于语义的预训练任务。我们为每个任务分配一个task_type_id
,task_type_id
在范围[0, config.task_type_vocab_size-1]
内。position_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?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
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通元组。start_positions
(torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算标记分类损失的标记跨度开始位置(索引)的标签。位置被夹紧到序列的长度(sequence_length
)。超出序列范围的位置不会计入损失的计算。end_positions
(torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算标记分类损失的标记跨度结束位置(索引)的标签。位置被夹紧到序列的长度(sequence_length
)。超出序列范围的位置不会计入损失的计算。
ErnieForQuestionAnswering 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
ErnieM
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/ernie_m
概述
ErnieM 模型是由欧阳璇、王硕欢、庞超、孙宇、田浩、吴华、王海峰在ERNIE-M:通过将跨语言语义与单语语料库对齐来增强多语言表示中提出的。
论文摘要如下:
*最近的研究表明,预训练的跨语言模型在下游跨语言任务中取得了令人印象深刻的性能。这种改进得益于学习大量的单语和平行语料库。尽管普遍认为平行语料对于提高模型性能至关重要,但现有方法往往受到平行语料规模的限制,特别是对于低资源语言。在本文中,我们提出了 ERNIE-M,一种新的训练方法,鼓励模型将多种语言的表示与单语语料库对齐,以克服平行语料规模对模型性能的限制。我们的关键见解是将反向翻译集成到预训练过程中。我们在单语语料库上生成伪平行句对,以便学习不同语言之间的语义对齐,从而增强跨语言模型的语义建模。实验结果表明,ERNIE-M 优于现有的跨语言模型,并在各种跨语言下游任务中取得了新的最先进结果。*此模型由Susnato Dhar贡献。原始代码可以在这里找到。
使用提示
- Ernie-M 是类似 BERT 的模型,因此是堆叠的 Transformer 编码器。
- 作者们没有像 BERT 那样使用 MaskedLM 进行预训练,而是使用了两种新技术:
交叉注意力遮蔽语言建模
和反向翻译遮蔽语言建模
。目前这两个 LMHead 目标在这里没有实现。 - 这是一个多语言语言模型。
- 下一句预测在预训练过程中没有使用。
资源
- 文本分类任务指南
- 标记分类任务指南
- 问答任务指南
- 多项选择任务指南
ErnieM 配置
class transformers.ErnieMConfig
( vocab_size: int = 250002 hidden_size: int = 768 num_hidden_layers: int = 12 num_attention_heads: int = 12 intermediate_size: int = 3072 hidden_act: str = 'gelu' hidden_dropout_prob: float = 0.1 attention_probs_dropout_prob: float = 0.1 max_position_embeddings: int = 514 initializer_range: float = 0.02 pad_token_id: int = 1 layer_norm_eps: float = 1e-05 classifier_dropout = None act_dropout = 0.0 **kwargs )
参数
vocab_size
(int
,可选,默认为 250002)—inputs_ids
在 ErnieMModel 中的词汇大小。也是标记嵌入矩阵的词汇大小。定义了在调用 ErnieMModel 时可以表示的不同标记数量。hidden_size
(int
,可选,默认为 768)— 嵌入层、编码器层和池化层的维度。num_hidden_layers
(int
,可选,默认为 12)— Transformer 编码器中的隐藏层数。num_attention_heads
(int
,可选,默认为 12)— Transformer 编码器中每个注意力层的注意力头数。intermediate_size
(int
,可选,默认为 3072)— 编码器中前馈(ff)层的维度。输入张量首先从 hidden_size 投影到 intermediate_size,然后再投影回 hidden_size。通常 intermediate_size 大于 hidden_size。hidden_act
(str
, optional, defaults to"gelu"
) — 前馈层中的非线性激活函数。支持"gelu"
、"relu"
和其他 torch 支持的激活函数。hidden_dropout_prob
(float
, optional, defaults to 0.1) — 嵌入和编码器中所有全连接层的丢弃概率。attention_probs_dropout_prob
(float
, optional, defaults to 0.1) — 所有编码器层中MultiHeadAttention
中使用的 dropout 概率,用于丢弃一些注意力目标。max_position_embeddings
(int
, optional, defaults to 514) — 位置编码维度的最大值,决定了输入序列的最大支持长度。initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的正态初始化器的标准差。标记词汇表中填充标记的索引。pad_token_id
(int
, optional, defaults to 1) — 填充标记 ID。layer_norm_eps
(float
, optional, defaults to 1e-05) — 层归一化层使用的 epsilon。classifier_dropout
(float
, optional) — 分类头的丢弃比率。act_dropout
(float
, optional, defaults to 0.0) — 此丢弃概率用于激活后的ErnieMEncoderLayer
。
这是用于存储 ErnieMModel 配置的配置类。它用于根据指定的参数实例化 Ernie-M 模型,定义模型架构。使用默认值实例化配置将产生类似于 Ernie-M
susnato/ernie-m-base_pytorch 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档获取更多信息。
普通初始化器将权重矩阵初始化为正态分布。查看 ErnieMPretrainedModel._init_weights()
以了解在 ErnieMModel
中如何初始化权重。
ErnieMTokenizer
class transformers.ErnieMTokenizer
( sentencepiece_model_ckpt vocab_file = None do_lower_case = False encoding = 'utf8' unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' sp_model_kwargs: Optional = None **kwargs )
参数
sentencepiece_model_file
(str
) — sentencepiece 模型文件路径。vocab_file
(str
, optional) — 词汇表的文件路径。do_lower_case
(str
, optional, defaults toTrue
) — 在分词时是否将输入转换为小写。unk_token
(str
, optional, defaults to"[UNK]"
) — 代表未知(词汇外)
的特殊标记。未知标记被设置为unk_token
以便转换为 ID。sep_token
(str
, optional, defaults to"[SEP]"
) — 用于分隔同一输入中的两个不同句子的特殊标记。pad_token
(str
, optional, defaults to"[PAD]"
) — 用于使标记数组大小相同以进行批处理的特殊标记。cls_token
(str
, optional, defaults to"[CLS]"
) — 用于序列分类的特殊标记。在构建带有特殊标记的序列时,它是序列的最后一个标记。mask_token
(str
, optional, defaults to"[MASK]"
) — 代表掩码标记的特殊标记。这是在掩码语言建模任务中使用的标记,模型尝试预测原始未掩码的标记。
构建 Ernie-M 分词器。它使用 sentencepiece
工具将单词切分为子词。
build_inputs_with_special_tokens
( token_ids_0 token_ids_1 = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)- 将添加特殊标记的 ID 列表。token_ids_1
(List[int]
,可选)- 第二个序列对应的 ID 列表。
返回
List[int]
带有适当特殊标记的 input_id 列表。
从一个序列或一对序列构建模型输入,用于序列分类任务,通过连接和添加特殊标记。ErnieM 序列具有以下格式:
- 单个序列:
[CLS] X [SEP]
- 一对序列:
[CLS] A [SEP] [SEP] B [SEP]
get_special_tokens_mask
( token_ids_0 token_ids_1 = None already_has_special_tokens = False ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)- 第一个序列的 ID 列表。token_ids_1
(List[int]
,可选)- 第二个序列对应的 ID 列表。already_has_special_tokens
(str
,可选,默认为False
)- 标记列表是否已经使用特殊标记格式化。
返回
List[int]
范围为[0, 1]的整数列表:特殊标记为 1,序列标记为 0。
从没有添加特殊标记的标记列表中检索序列 id。在使用 tokenizer encode
方法添加特殊标记时调用此方法。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)- 第一个标记化序列。token_ids_1
(List[int]
,可选)- 第二个标记化序列。
返回
List[int]
标记类型 ID。
创建与传递的序列相对应的 token 类型 ID。什么是 token 类型 ID? 如果模型有一种特殊的构建方式,应该在子类中重写这些。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
ErnieMModel
class transformers.ErnieMModel
( config add_pooling_layer = True )
参数
config
(ErnieMConfig](/docs/transformers/v4.37.2/en/main_classes/model#transformers.PreTrainedModel.from_pretrained)方法以加载模型权重。
裸的 ErnieM 模型变压器输出原始隐藏状态,没有特定的头部。
此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None position_ids: Optional = None attention_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None past_key_values: Optional = None use_cache: Optional = None output_hidden_states: Optional = None output_attentions: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。
可以使用 ErnieMTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:
- 1 表示
未被遮蔽
的标记, - 0 表示
被遮蔽
的标记。
- 什么是注意力遮罩?
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
什么是位置 ID?head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值选择在[0, 1]
之间:
- 1 表示头部
未被遮蔽
, - 0 表示头部被
遮蔽
。
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,可以直接传递嵌入表示而不是传递input_ids
。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。
返回
transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或torch.FloatTensor
元组
一个 transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(ErnieMConfig)和输入的不同元素。
last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的输出中的隐藏状态序列。
如果仅使用past_key_values
,则输出形状为(batch_size, 1, hidden_size)
的序列的最后一个隐藏状态。past_key_values
(tuple(tuple(torch.FloatTensor))
, optional, 当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,以及如果config.is_encoder_decoder=True
还有 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。
包含预先计算的隐藏状态(自注意力块中的键和值,以及在交叉注意力块中如果config.is_encoder_decoder=True
的情况下)可用于加速顺序解码(请参见past_key_values
输入)。hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每一层的输出)。
模型在每一层输出的隐藏状态加上可选的初始嵌入输出。attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。cross_attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
和config.add_cross_attention=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
ErnieMModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, ErnieMModel >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("susnato/ernie-m-base_pytorch") >>> model = ErnieMModel.from_pretrained("susnato/ernie-m-base_pytorch") >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt") >>> outputs = model(**inputs) >>> last_hidden_states = outputs.last_hidden_state
Transformers 4.37 中文文档(三十一)(5)https://developer.aliyun.com/article/1564901