Transformers 文档
RoBERTa
并获取增强的文档体验
开始使用
RoBERTa
RoBERTa 模型在 RoBERTa: 一种稳健优化的 BERT 预训练方法 中提出,作者为 Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov。它基于 Google 于 2018 年发布的 BERT 模型。
它建立在 BERT 的基础上,并修改了关键的超参数,移除了下一句子的预训练目标,并使用更大的 mini-batches 和学习率进行训练。
论文的摘要如下:
语言模型预训练带来了显著的性能提升,但不同方法之间的仔细比较具有挑战性。训练在计算上非常昂贵,通常在不同大小的私有数据集上完成,并且正如我们将展示的那样,超参数的选择对最终结果有显著影响。我们提出了 BERT 预训练(Devlin et al., 2019)的复制研究,该研究仔细衡量了许多关键超参数和训练数据大小的影响。我们发现 BERT 明显训练不足,并且可以匹配或超过之后发布的每个模型的性能。我们最好的模型在 GLUE、RACE 和 SQuAD 上实现了最先进的结果。这些结果突出了先前被忽视的设计选择的重要性,并对最近报告的改进来源提出了疑问。我们发布了我们的模型和代码。
使用技巧
此实现与 BertModel 相同,只是对嵌入进行了细微调整,并为 RoBERTa 预训练模型进行了设置。
RoBERTa 具有与 BERT 相同的架构,但使用字节级 BPE 作为分词器(与 GPT-2 相同),并使用不同的预训练方案。
RoBERTa 没有
token_type_ids
,因此您无需指示哪个 token 属于哪个段。只需使用分隔符 tokentokenizer.sep_token
(或</s>
) 分隔您的段即可。RoBERTa 类似于 BERT,但具有更好的预训练技术
- 动态掩码:token 在每个 epoch 中以不同的方式被掩盖,而 BERT 只执行一次。
- 句子打包:句子被打包在一起以达到 512 个 token(因此句子的顺序可能跨越多个文档)。
- 更大的批次:训练使用更大的批次。
- 字节级 BPE 词汇表:使用 BPE,以字节为子单元而不是字符,以适应 Unicode 字符。
CamemBERT 是 RoBERTa 的包装器。有关使用示例,请参阅其模型页面。
资源
Hugging Face 官方和社区(🌎 表示)资源列表,可帮助您开始使用 RoBERTa。如果您有兴趣提交资源以包含在此处,请随时打开 Pull Request,我们将对其进行审核!该资源最好能展示一些新的东西,而不是重复现有的资源。
- 一篇关于使用 RoBERTa 和 Inference API 在 Twitter 上开始进行情感分析 的博客。
- 一篇关于使用 RoBERTa 的 Kili 和 Hugging Face AutoTrain 进行观点分类的博客。
- 一本关于如何微调 RoBERTa 以进行情感分析的笔记本。 🌎
- 此示例脚本和笔记本支持 RobertaForSequenceClassification。
- 此示例脚本和笔记本支持 TFRobertaForSequenceClassification。
- 此示例脚本和笔记本支持 FlaxRobertaForSequenceClassification。
- 文本分类任务指南
- 此示例脚本和笔记本支持 RobertaForTokenClassification。
- 此示例脚本和笔记本支持 TFRobertaForTokenClassification。
- 此示例脚本支持 FlaxRobertaForTokenClassification。
- Token 分类章节,来自 🤗 Hugging Face 课程。
- Token 分类任务指南
- 一篇关于如何使用 Transformers 和 Tokenizers 以及 RoBERTa 从头开始训练新的语言模型的博客。
- 此示例脚本和笔记本支持 RobertaForMaskedLM。
- 此示例脚本和笔记本支持 TFRobertaForMaskedLM。
- 此示例脚本和笔记本支持 FlaxRobertaForMaskedLM。
- 🤗 Hugging Face 课程的掩码语言建模章节。
- 掩码语言建模任务指南
- 一篇关于使用 Optimum 和 Transformers Pipelines 以及 RoBERTa 加速推理以进行问答的博客。
- 此示例脚本和笔记本支持 RobertaForQuestionAnswering。
- 此示例脚本和笔记本支持 TFRobertaForQuestionAnswering。
- 此示例脚本支持 FlaxRobertaForQuestionAnswering。
- 🤗 Hugging Face 课程的问答章节。
- 问答任务指南
多项选择
RobertaConfig
class transformers.RobertaConfig
< source >( vocab_size = 50265 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 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 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 position_embedding_type = 'absolute' use_cache = True classifier_dropout = None **kwargs )
参数
- vocab_size (
int
, 可选的, 默认为 50265) — RoBERTa 模型的词汇表大小。定义了在调用 RobertaModel 或 TFRobertaModel 时,通过的inputs_ids
可以表示的不同 token 的数量。 - hidden_size (
int
, 可选的, 默认为 768) — 编码器层和池化器层的维度。 - num_hidden_layers (
int
, 可选的, 默认为 12) — Transformer 编码器中的隐藏层数。 - num_attention_heads (
int
, 可选的, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。 - intermediate_size (
int
, 可选的, 默认为 3072) — 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) — 在调用 RobertaModel 或 TFRobertaModel 时,通过的token_type_ids
的词汇表大小。 - initializer_range (
float
, 可选的, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。 - layer_norm_eps (
float
, 可选的, 默认为 1e-12) — 层归一化层使用的 epsilon 值。 - 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"
的更多信息,请参阅 Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)中的方法 4。 - is_decoder (
bool
, 可选的, 默认为False
) — 模型是否用作解码器。如果为False
,则模型用作编码器。 - use_cache (
bool
, 可选的, 默认为True
) — 模型是否应返回上次的键/值注意力(并非所有模型都使用)。仅当config.is_decoder=True
时相关。 - classifier_dropout (
float
, 可选的) — 分类头的 dropout 比率。
这是用于存储 RobertaModel 或 TFRobertaModel 配置的配置类。它用于根据指定的参数实例化 RoBERTa 模型,定义模型架构。使用默认值实例化配置将产生与 RoBERTa FacebookAI/roberta-base 架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。请阅读 PretrainedConfig 的文档以获取更多信息。
示例
>>> from transformers import RobertaConfig, RobertaModel
>>> # Initializing a RoBERTa configuration
>>> configuration = RobertaConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = RobertaModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
RobertaTokenizer
class transformers.RobertaTokenizer
< source >( vocab_file merges_file errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = False **kwargs )
参数
- vocab_file (
str
) — 词汇表文件的路径。 - merges_file (
str
) — merges 文件的路径。 - errors (
str
, 可选, 默认为"replace"
) — 将字节解码为 UTF-8 时遵循的范例。有关更多信息,请参阅 bytes.decode。 - bos_token (
str
, 可选, 默认为"<s>"
) — 预训练期间使用的序列开始标记。可以用作序列分类器标记。当使用特殊标记构建序列时,这不是用于序列开始的标记。使用的标记是
cls_token
。 - eos_token (
str
, 可选, 默认为"</s>"
) — 序列结束标记。当使用特殊标记构建序列时,这不是用于序列结束的标记。使用的标记是
sep_token
。 - sep_token (
str
, 可选, 默认为"</s>"
) — 分隔符标记,用于从多个序列构建序列时,例如用于序列分类的两个序列或用于问答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。 - cls_token (
str
, 可选, 默认为"<s>"
) — 分类器标记,用于进行序列分类(对整个序列而不是每个标记进行分类)。当使用特殊标记构建序列时,它是序列的第一个标记。 - unk_token (
str
, 可选, 默认为"<unk>"
) — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。 - pad_token (
str
, 可选, 默认为"<pad>"
) — 用于填充的标记,例如在批量处理不同长度的序列时。 - mask_token (
str
, 可选, 默认为"<mask>"
) — 用于掩码值的标记。这是使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。 - add_prefix_space (
bool
, 可选, 默认为False
) — 是否在输入中添加初始空格。这允许像对待任何其他单词一样对待前导单词。(RoBERTa tokenizer 通过前面的空格检测单词的开头)。
构建一个 RoBERTa tokenizer,它从 GPT-2 tokenizer 派生而来,使用字节级字节对编码(Byte-Pair-Encoding)。
此 tokenizer 经过训练,将空格视为标记的一部分(有点像 sentencepiece),因此一个单词
在句子开头(没有空格)和不在句子开头时,将被不同地编码
>>> from transformers import RobertaTokenizer
>>> tokenizer = RobertaTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> tokenizer("Hello world")["input_ids"]
[0, 31414, 232, 2]
>>> tokenizer(" Hello world")["input_ids"]
[0, 20920, 232, 2]
您可以通过在实例化此 tokenizer 时或在某些文本上调用它时传递 add_prefix_space=True
来绕过此行为,但由于模型不是以这种方式预训练的,因此可能会导致性能下降。
当与 is_split_into_words=True
一起使用时,此 tokenizer 将在每个单词(甚至是第一个单词)之前添加一个空格。
此 tokenizer 继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) → List[int]
通过连接和添加特殊标记,从序列或序列对构建模型输入,用于序列分类任务。 RoBERTa 序列具有以下格式
- 单个序列:
<s> X </s>
- 序列对:
<s> A </s></s> B </s>
get_special_tokens_mask
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None already_has_special_tokens: bool = False ) → List[int]
从没有添加特殊标记的标记列表中检索序列 ID。当使用 tokenizer prepare_for_model
方法添加特殊标记时,将调用此方法。
create_token_type_ids_from_sequences
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) → List[int]
从传递的两个序列创建一个掩码,用于序列对分类任务。 RoBERTa 不使用标记类型 ID,因此返回零列表。
RobertaTokenizerFast
class transformers.RobertaTokenizerFast
< source >( vocab_file = None merges_file = None tokenizer_file = None errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = False trim_offsets = True **kwargs )
参数
- vocab_file (
str
) — 词汇表文件的路径。 - merges_file (
str
) — merges 文件的路径。 - errors (
str
, 可选, 默认为"replace"
) — 将字节解码为 UTF-8 时要遵循的范例。 有关更多信息,请参阅 bytes.decode。 - bos_token (
str
, 可选, 默认为"<s>"
) — 预训练期间使用的序列开始标记。可以用作序列分类器标记。当使用特殊标记构建序列时,这不是用于序列开始的标记。使用的标记是
cls_token
。 - eos_token (
str
, 可选, 默认为"</s>"
) — 序列结束标记。当使用特殊标记构建序列时,这不是用于序列结束的标记。使用的标记是
sep_token
。 - sep_token (
str
, 可选, 默认为"</s>"
) — 分隔符标记,当从多个序列构建序列时使用,例如用于序列分类的两个序列或用于问答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。 - cls_token (
str
, 可选, 默认为"<s>"
) — 分类器标记,用于进行序列分类(对整个序列而不是每个标记进行分类)。当使用特殊标记构建序列时,它是序列的第一个标记。 - unk_token (
str
, 可选, 默认为"<unk>"
) — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。 - pad_token (
str
, 可选, 默认为"<pad>"
) — 用于填充的标记,例如在批处理不同长度的序列时。 - mask_token (
str
, 可选, 默认为"<mask>"
) — 用于屏蔽值的标记。这是使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。 - add_prefix_space (
bool
, 可选, 默认为False
) — 是否在输入中添加初始空格。这允许将前导词与任何其他词一样对待。(RoBERTa 分词器通过前面的空格检测单词的开头)。 - trim_offsets (
bool
, 可选, 默认为True
) — 后处理步骤是否应修剪偏移量以避免包含空格。
构建一个“快速” RoBERTa 分词器(由 HuggingFace 的 tokenizers 库支持),它源自 GPT-2 分词器,使用字节级字节对编码。
此 tokenizer 经过训练,将空格视为标记的一部分(有点像 sentencepiece),因此一个单词
在句子开头(没有空格)和不在句子开头时,将被不同地编码
>>> from transformers import RobertaTokenizerFast
>>> tokenizer = RobertaTokenizerFast.from_pretrained("FacebookAI/roberta-base")
>>> tokenizer("Hello world")["input_ids"]
[0, 31414, 232, 2]
>>> tokenizer(" Hello world")["input_ids"]
[0, 20920, 232, 2]
您可以通过在实例化此 tokenizer 时或在某些文本上调用它时传递 add_prefix_space=True
来绕过此行为,但由于模型不是以这种方式预训练的,因此可能会导致性能下降。
当与 is_split_into_words=True
一起使用时,此分词器需要使用 add_prefix_space=True
实例化。
此分词器继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
RobertaModel
class transformers.RobertaModel
< source >( config add_pooling_layer = True )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
裸 RoBERTa 模型转换器输出原始隐藏状态,顶部没有任何特定的头部。
此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。
该模型可以充当编码器(仅具有自注意力)以及解码器,在这种情况下,在自注意力层之间添加了一个交叉注意力层,遵循 Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser 和 Illia Polosukhin 在 Attention is all you need 中描述的架构。
要充当解码器,需要使用配置的 is_decoder
参数设置为 True
来初始化模型。要在 Seq2Seq 模型中使用,模型需要使用 is_decoder
参数和 add_cross_attention
都设置为 True
来初始化;然后 encoder_hidden_states
将作为前向传递的输入被期望。
forward (前向传播)
< source >( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None token_type_ids: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None encoder_hidden_states: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[typing.List[torch.FloatTensor]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或 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 标记。仅当使用
type_vocab_size
参数且值为= 2 初始化模型时,才能使用此参数。此张量中的所有值应始终 < type_vocab_size。
- position_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 位置嵌入中每个输入序列标记的位置索引。在范围[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
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。 - encoder_hidden_states (
torch.FloatTensor
, 形状为(batch_size, sequence_length, hidden_size)
, 可选) — 编码器最后一层的输出处的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。 - encoder_attention_mask (
torch.FloatTensor
, 形状为(batch_size, sequence_length)
或(batch_size, sequence_length, target_length)
, 可选) — 用于避免对编码器输入的填充 token 索引执行注意力的掩码。如果模型配置为解码器,则此掩码在交叉注意力中使用。 掩码值选自[0, 1]
:- 1 表示 token 未被掩盖,
- 0 表示 token 被掩盖。
- past_key_values (
tuple(tuple(torch.FloatTensor))
, 长度为config.n_layers
,其中每个元组有 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的张量) — 包含注意力块的预计算的键和值隐藏状态。 可用于加速解码。如果使用
past_key_values
,则用户可以选择仅输入最后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.BaseModelOutputWithPoolingAndCrossAttentions 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或 torch.FloatTensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
last_hidden_state (
torch.FloatTensor
, 形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层输出处的隐藏状态序列。 -
pooler_output (
torch.FloatTensor
, 形状为(batch_size, hidden_size)
) — 序列的第一个 token(分类 token)的最后一层隐藏状态,在通过用于辅助预训练任务的层进一步处理之后。例如,对于 BERT 系列模型,这将返回通过线性层和 tanh 激活函数处理后的分类 token。线性层权重是从预训练期间的下一句预测(分类)目标中训练出来的。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出;+ 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的隐藏状态,加上可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
且config.add_cross_attention=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
-
past_key_values (
tuple(tuple(torch.FloatTensor))
, 可选, 当传递use_cache=True
或当config.use_cache=True
时返回) —tuple(torch.FloatTensor)
元组,长度为config.n_layers
,其中每个元组有 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
输入)加速顺序解码。
RobertaModel forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, RobertaModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = RobertaModel.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
RobertaForCausalLM
class transformers.RobertaForCausalLM
< source >( config )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,而只会加载配置。查看 from_pretrained() 方法以加载模型权重。
RoBERTa 模型,顶部带有用于 CLM 微调的 语言建模
头。
此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。
forward (前向传播)
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None encoder_hidden_states: typing.Optional[torch.FloatTensor] = None encoder_attention_mask: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None past_key_values: typing.Tuple[typing.Tuple[torch.FloatTensor]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None **kwargs ) → transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
, 形状为(batch_size, sequence_length)
) — 词汇表中输入序列 token 的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
, 形状为(batch_size, sequence_length)
, 可选) — 用于避免对填充 token 索引执行注意力的掩码。 掩码值选自[0, 1]
:- 1 表示 token 未被掩盖,
- 0 表示 token 被掩盖。
- token_type_ids (
torch.LongTensor
, 形状为(batch_size, sequence_length)
, 可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。 索引选自[0,1]
:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。 仅当模型使用
type_vocab_size
参数且值= 2 初始化时,才能使用此参数。 此张量中的所有值应始终 < type_vocab_size。
- position_ids (
torch.LongTensor
, 形状为(batch_size, sequence_length)
, 可选) — 每个输入序列 token 在位置嵌入中的位置索引。 选自范围[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
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的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
of shape(batch_size, sequence_length)
, optional) — 用于避免在编码器输入的填充 token 索引上执行注意力的掩码。如果模型配置为解码器,则此掩码在交叉注意力中使用。掩码值在[0, 1]
中选择:- 1 表示 未被掩码 的 token,
- 0 表示 已被掩码 的 token。
- labels (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算从左到右语言建模损失(下一个词预测)的标签。索引应在[-100, 0, ..., config.vocab_size]
中(请参阅input_ids
文档字符串)。索引设置为-100
的 token 将被忽略(掩码),损失仅针对标签在[0, ..., config.vocab_size]
中的 token 计算。 - 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
(那些没有将其过去的键值状态提供给此模型的)的形状为(batch_size, 1)
而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 - use_cache (
bool
, optional) — 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(请参阅past_key_values
)。
返回值
transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一个 torch.FloatTensor
元组 (如果传递 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
torch.FloatTensor
of shape(1,)
, optional, whenlabels
are provided) — 语言建模损失(用于下一个 token 预测)。 -
logits (
torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(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 (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
-
cross_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)
。注意力 softmax 之后的交叉注意力权重,用于计算交叉注意力头中的加权平均值。
-
past_key_values (
tuple(tuple(torch.FloatTensor))
, optional, returned whenuse_cache=True
is passed or whenconfig.use_cache=True
) —torch.FloatTensor
元组的元组,长度为config.n_layers
,每个元组包含自注意力和交叉注意力层的缓存键、值状态(如果模型在编码器-解码器设置中使用)。仅当config.is_decoder = True
时相关。包含预计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码(请参阅
past_key_values
输入)。
RobertaForCausalLM 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, RobertaForCausalLM, AutoConfig
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> config = AutoConfig.from_pretrained("FacebookAI/roberta-base")
>>> config.is_decoder = True
>>> model = RobertaForCausalLM.from_pretrained("FacebookAI/roberta-base", config=config)
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.logits
RobertaForMaskedLM
class transformers.RobertaForMaskedLM
< source >( config )
参数
- config (RobertaConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有 language modeling
头的 RoBERTa 模型。
此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。
forward (前向传播)
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None encoder_hidden_states: typing.Optional[torch.FloatTensor] = None encoder_attention_mask: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.MaskedLMOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列 token 的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在 padding token 索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 表示 未被掩码 的 token,
- 0 表示 已被掩码 的 token。
- token_type_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 分段 token 索引,用于指示输入的第一个和第二个部分。索引在[0,1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。仅当模型使用
type_vocab_size
参数且值= 2 初始化时,才能使用此参数。此张量中的所有值应始终 < type_vocab_size。
- position_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列 token 在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于 nullify 自注意力模块的选定头的掩码。掩码值在[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 而不是普通元组。 - labels (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
中(请参阅input_ids
文档字符串)。索引设置为-100
的 token 将被忽略(掩码),损失仅针对标签在[0, ..., config.vocab_size]
中的 token 计算。 - kwargs (
Dict[str, any]
, optional, defaults to{}
) — 用于隐藏已弃用的旧版参数。
返回值
transformers.modeling_outputs.MaskedLMOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.MaskedLMOutput 或一个 torch.FloatTensor
元组 (如果传递 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
torch.FloatTensor
of shape(1,)
, optional, whenlabels
are provided) — 掩码语言建模 (MLM) 损失。 -
logits (
torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(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 (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
RobertaForMaskedLM 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, RobertaForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = RobertaForMaskedLM.from_pretrained("FacebookAI/roberta-base")
>>> 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)
0.1
RobertaForSequenceClassification
class transformers.RobertaForSequenceClassification
< source >( config )
参数
- config (RobertaConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有序列分类/回归头的 RoBERTa 模型转换器(池化输出顶部的线性层),例如用于 GLUE 任务。
此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。
forward (前向传播)
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.SequenceClassifierOutput 或 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 标记。 此参数仅当模型使用
type_vocab_size
参数且值= 2 初始化时才可使用。此张量中的所有值应始终 < type_vocab_size。
- position_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
,可选) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (形状为
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选) — 掩码,用于无效化自注意力模块的选定头。 掩码值在[0, 1]
中选择:- 1 表示头未被掩盖,
- 0 表示头被掩盖。
- inputs_embeds (形状为
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 - labels (形状为
(batch_size,)
的torch.LongTensor
,可选) — 用于计算序列分类/回归损失的标签。 索引应在[0, ..., config.num_labels - 1]
中。 如果config.num_labels == 1
,则计算回归损失(均方损失);如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回值
transformers.modeling_outputs.SequenceClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.SequenceClassifierOutput 或 torch.FloatTensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (形状为
(1,)
的torch.FloatTensor
,可选,当提供labels
时返回) — 分类(或回归,如果 config.num_labels==1)损失。 -
logits (形状为
(batch_size, config.num_labels)
的torch.FloatTensor
) — 分类(或回归,如果 config.num_labels==1)得分(在 SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出;+ 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的隐藏状态,加上可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
RobertaForSequenceClassification 的 forward 方法,重写了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
单标签分类示例
>>> import torch
>>> from transformers import AutoTokenizer, RobertaForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("cardiffnlp/twitter-roberta-base-emotion")
>>> model = RobertaForSequenceClassification.from_pretrained("cardiffnlp/twitter-roberta-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]
'optimism'
>>> # 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 = RobertaForSequenceClassification.from_pretrained("cardiffnlp/twitter-roberta-base-emotion", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
0.08
多标签分类示例
>>> import torch
>>> from transformers import AutoTokenizer, RobertaForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("cardiffnlp/twitter-roberta-base-emotion")
>>> model = RobertaForSequenceClassification.from_pretrained("cardiffnlp/twitter-roberta-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 = RobertaForSequenceClassification.from_pretrained(
... "cardiffnlp/twitter-roberta-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
RobertaForMultipleChoice
class transformers.RobertaForMultipleChoice
< source >( config )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,而只会加载配置。 查看 from_pretrained() 方法以加载模型权重。
带有置于顶部的多项选择分类头的 Roberta 模型(池化输出顶部的线性层和一个 softmax),例如用于 RocStories/SWAG 任务。
此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。
forward (前向传播)
< source >( input_ids: typing.Optional[torch.LongTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.MultipleChoiceModelOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, num_choices, sequence_length)
的torch.LongTensor
) — 词汇表中输入序列标记的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (形状为
(batch_size, num_choices, sequence_length)
的torch.FloatTensor
,可选) — 掩码,用于避免在填充标记索引上执行注意力机制。掩码值在[0, 1]
中选择:- 1 表示标记未被掩盖,
- 0 表示标记被掩盖。
- token_type_ids (形状为
(batch_size, num_choices, sequence_length)
的torch.LongTensor
,可选) — 分段标记索引,用于指示输入的第一个和第二个部分。 索引在[0,1]
中选择:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。 此参数仅当模型使用
type_vocab_size
参数且值= 2 初始化时才可使用。此张量中的所有值应始终 < type_vocab_size。
- position_ids (形状为
(batch_size, num_choices, sequence_length)
的torch.LongTensor
,可选) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (形状为
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选) — 掩码,用于无效化自注意力模块的选定头。 掩码值在[0, 1]
中选择:- 1 表示头未被掩盖,
- 0 表示头被掩盖。
- inputs_embeds (形状为
(batch_size, num_choices, sequence_length, hidden_size)
的torch.FloatTensor
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 - labels (
torch.LongTensor
of shape(batch_size,)
, optional) — Labels for computing the multiple choice classification loss. Indices should be in[0, ..., num_choices-1]
wherenum_choices
is the size of the second dimension of the input tensors. (Seeinput_ids
above)
返回值
指向 transformers.modeling_outputs.MultipleChoiceModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.MultipleChoiceModelOutput 或一个 torch.FloatTensor
的元组(如果传递了 return_dict=False
或者当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
torch.FloatTensor
,形状为 (1,),可选,当提供labels
时返回) — 分类损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, num_choices)
) — num_choices 是输入张量的第二个维度。(参见上面的 input_ids)。分类得分(在 SoftMax 之前)。
-
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出;+ 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的隐藏状态,加上可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
RobertaForMultipleChoice 的前向传播方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, RobertaForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = RobertaForMultipleChoice.from_pretrained("FacebookAI/roberta-base")
>>> 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
RobertaForTokenClassification
class transformers.RobertaForTokenClassification
< source >( config )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有 token classification head 的 Roberta 模型(在 hidden-states 输出之上的一个线性层),例如用于命名实体识别 (NER) 任务。
此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。
forward (前向传播)
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 了解详情。
- attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
, 可选) — 掩码,用于避免在 padding token 索引上执行 attention。 掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩码,
- 0 表示 tokens 被掩码。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — Segment token 索引,用于指示输入的第一部分和第二部分。索引在[0,1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。 此参数仅当模型使用
type_vocab_size
参数且值= 2 初始化时才可以使用。此张量中的所有值应始终 < type_vocab_size。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — 每个输入序列 tokens 在 position embeddings 中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
, 可选) — 掩码,用于 nullify self-attention 模块的选定 heads。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩码,
- 0 表示 head 被掩码。
- inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
, 可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部 embedding lookup matrix 更好地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有 attention 层的 attentions 张量。 有关更多详细信息,请参见返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。 - labels (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — 用于计算 token 分类损失的标签。 索引应在[0, ..., config.num_labels - 1]
中。
返回值
指向 transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.TokenClassifierOutput 或一个 torch.FloatTensor
的元组(如果传递了 return_dict=False
或者当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, sequence_length, config.num_labels)
) — 分类得分(在 SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出;+ 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的隐藏状态,加上可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
RobertaForTokenClassification 的前向传播方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, RobertaForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("Jean-Baptiste/roberta-large-ner-english")
>>> model = RobertaForTokenClassification.from_pretrained("Jean-Baptiste/roberta-large-ner-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
['O', 'ORG', 'ORG', 'O', 'O', 'O', 'O', 'O', 'LOC', 'O', 'LOC', 'LOC']
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
0.01
RobertaForQuestionAnswering
class transformers.RobertaForQuestionAnswering
< source >( config )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有 span classification head 的 Roberta 模型,用于抽取式问答任务,如 SQuAD(在 hidden-states 输出之上的线性层,用于计算 span start logits
和 span end logits
)。
此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。
forward (前向传播)
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None start_positions: typing.Optional[torch.LongTensor] = None end_positions: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.QuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 了解详情。
- attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
, 可选) — 掩码,用于避免在 padding token 索引上执行 attention。 掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩码,
- 0 表示 tokens 被掩码。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — Segment token 索引,用于指示输入的第一部分和第二部分。索引在[0,1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。 此参数仅当模型使用
type_vocab_size
参数且值= 2 初始化时才可以使用。此张量中的所有值应始终 < type_vocab_size。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 位置嵌入中每个输入序列标记的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块中选定的 head 失效的掩码。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩蔽,
- 0 表示 head 被掩蔽。
- 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,)
,可选) — 用于计算 token 分类损失的已标记跨度起点的标签(索引)。 位置被限制在序列的长度 (sequence_length
) 内。 序列之外的位置不计入损失计算。 - end_positions (
torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算 token 分类损失的已标记跨度终点的标签(索引)。 位置被限制在序列的长度 (sequence_length
) 内。 序列之外的位置不计入损失计算。
返回值
transformers.modeling_outputs.QuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.QuestionAnsweringModelOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 总跨度提取损失是起始位置和结束位置的交叉熵损失之和。 -
start_logits (
torch.FloatTensor
,形状为(batch_size, sequence_length)
) — 跨度起始分数(在 SoftMax 之前)。 -
end_logits (
torch.FloatTensor
,形状为(batch_size, sequence_length)
) — 跨度结束分数(在 SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出;+ 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出处的隐藏状态,加上可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
The RobertaForQuestionAnswering forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, RobertaForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("deepset/roberta-base-squad2")
>>> model = RobertaForQuestionAnswering.from_pretrained("deepset/roberta-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)
' puppet'
>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])
>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
0.86
TFRobertaModel
class transformers.TFRobertaModel
< source >( config *inputs **kwargs )
参数
- config (RobertaConfig) — 具有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 请查看 from_pretrained() 方法来加载模型权重。
裸 RoBERTa 模型转换器输出原始隐藏状态,顶部没有任何特定的头部。
此模型继承自 TFPreTrainedModel。 请查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 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 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.TFBaseModelOutputWithPoolingAndCrossAttentions or tuple(tf.Tensor)
参数
- input_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免对 padding token 索引执行注意力的掩码。 掩码值在[0, 1]
中选择:- 1 表示 未被掩蔽 的 token,
- 0 表示 被掩蔽 的 token。
- token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 分段 token 索引,用于指示输入的第一个和第二个部分。 索引在[0, 1]
中选择:- 0 对应于句子 A token,
- 1 对应于句子 B token。
- 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)
,可选) — 用于使自注意力模块中选定的 head 失效的掩码。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩蔽,
- 0 表示 head 被掩蔽。
- inputs_embeds (
tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您想要比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的attentions
。 此参数只能在 eager 模式下使用,在 graph 模式下,将使用 config 中的值。 - output_hidden_states (
bool
,可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的hidden_states
。 此参数只能在 eager 模式下使用,在 graph 模式下,将使用 config 中的值。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 此参数可以在 eager 模式下使用,在 graph 模式下,该值将始终设置为 True。 - training (
bool
, optional, defaults toFalse
) — 是否在训练模式下使用模型(例如 dropout 模块等在训练和评估模式下的行为有所不同)。 - encoder_hidden_states (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力机制中使用。 - encoder_attention_mask (
tf.Tensor
of shape(batch_size, sequence_length)
, optional) — 避免在编码器输入的 padding token 索引上执行 attention 的掩码。如果模型配置为解码器,则此掩码在交叉注意力机制中使用。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 已被掩盖。
- past_key_values (
Tuple[Tuple[tf.Tensor]]
of lengthconfig.n_layers
) — 包含 attention 模块的预计算的 key 和 value 隐藏状态。可用于加速解码。如果使用了past_key_values
,用户可以选择仅输入最后的decoder_input_ids
(那些没有将其过去的 key value 状态提供给此模型的) 形状为(batch_size, 1)
,而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 - use_cache (
bool
, optional, defaults toTrue
) — 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。训练期间设置为False
,生成期间设置为True
。
返回值
transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentions 或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentions 或一个 tf.Tensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
last_hidden_state (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
pooler_output (
tf.Tensor
of shape(batch_size, hidden_size)
) — 序列的第一个 token(分类 token)的最后一层隐藏状态,通过线性层和 Tanh 激活函数进一步处理。线性层权重在预训练期间从下一句预测(分类)目标中训练而来。此输出通常不是输入语义内容的良好摘要,对于整个输入序列,您通常最好使用隐藏状态序列的平均值或池化。
-
past_key_values (
List[tf.Tensor]
, optional, returned whenuse_cache=True
is passed or whenconfig.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.Tensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —tf.Tensor
元组(每个嵌入输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始嵌入输出处的隐藏状态。
-
attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
-
cross_attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
TFRobertaModel forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFRobertaModel
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = TFRobertaModel.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> last_hidden_states = outputs.last_hidden_state
TFRobertaForCausalLM
call
< 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 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 labels: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或 tuple(tf.Tensor)
参数
- input_ids (
Numpy array
或tf.Tensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (
Numpy array
或tf.Tensor
of shape(batch_size, sequence_length)
, optional) — 避免在 padding token 索引上执行 attention 的掩码。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 已被掩盖。
- token_type_ids (
Numpy array
或tf.Tensor
of shape(batch_size, sequence_length)
, optional) — Segment token 索引以指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
Numpy array
或tf.Tensor
of shape(batch_size, sequence_length)
, optional) — 位置嵌入中每个输入序列 tokens 的位置索引。在[0, config.max_position_embeddings - 1]
范围内选择。 - head_mask (
Numpy array
或tf.Tensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于置空 self-attention 模块的选定 head 的掩码。掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 已被掩盖。
- inputs_embeds (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — (可选) 您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, optional) — 是否返回所有 attention 层的 attention 张量。 有关更多详细信息,请参见返回张量下的attentions
。 此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的hidden_states
。 此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - return_dict (
bool
, optional) — 是否返回 ModelOutput 而不是普通元组。 此参数可以在 eager 模式下使用,在 graph 模式下该值将始终设置为 True。 - training (
bool
, optional, defaults toFalse
) — 是否在训练模式下使用模型(例如 dropout 模块等在训练和评估模式下的行为有所不同)。 - encoder_hidden_states (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力机制中使用。 - encoder_attention_mask (
tf.Tensor
of shape(batch_size, sequence_length)
, optional) — 避免在编码器输入的 padding token 索引上执行 attention 的掩码。如果模型配置为解码器,则此掩码在交叉注意力机制中使用。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 已被掩盖。
- 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
。 - labels (
tf.Tensor
或np.ndarray
,形状为(batch_size, sequence_length)
, 可选) — 用于计算交叉熵分类损失的标签。索引应在[0, ..., config.vocab_size - 1]
范围内。
返回值
transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或一个 tf.Tensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
tf.Tensor
,形状为(n,)
, 可选, 其中 n 是非掩码标签的数量,当提供labels
时返回) — 语言建模损失(用于下一个token预测)。 -
logits (
tf.Tensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前的每个词汇token的分数)。 -
hidden_states (
tuple(tf.Tensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —tf.Tensor
元组(每个嵌入输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始嵌入输出处的隐藏状态。
-
attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
-
cross_attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
-
past_key_values (
List[tf.Tensor]
, optional, returned whenuse_cache=True
is passed or whenconfig.use_cache=True
) — 长度为config.n_layers
的tf.Tensor
列表,其中每个张量的形状为(2, batch_size, num_heads, sequence_length, embed_size_per_head)
)。包含预计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码(请参阅
past_key_values
输入)。
TFRobertaForCausalLM 前向方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFRobertaForCausalLM
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = TFRobertaForCausalLM.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> logits = outputs.logits
TFRobertaForMaskedLM
class transformers.TFRobertaForMaskedLM
< 源代码 >( config *inputs **kwargs )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。
带有 language modeling
头的 RoBERTa 模型。
此模型继承自 TFPreTrainedModel。 请查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 源代码 >( 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 或 tuple(tf.Tensor)
参数
- input_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列token的索引。可以使用 AutoTokenizer 获取索引。 请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode() 了解详细信息。
- attention_mask (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
, 可选) — 用于避免在填充 token 索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩码,
- 0 表示 token 被掩码。
- token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
, 可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
Numpy array
或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
。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的hidden_states
。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通的元组。此参数可以在 eager 模式下使用,在 graph 模式下该值将始终设置为 True。 - training (
bool
, 可选, 默认为False
) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间具有不同的行为)。 - labels (
tf.Tensor
,形状为(batch_size, sequence_length)
, 可选) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(请参阅input_ids
文档字符串)。索引设置为-100
的 token 将被忽略(掩码),损失仅针对标签在[0, ..., config.vocab_size]
中的 token 计算。
返回值
transformers.modeling_tf_outputs.TFMaskedLMOutput 或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFMaskedLMOutput 或一个 tf.Tensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
tf.Tensor
,形状为(n,)
, 可选, 其中 n 是非掩码标签的数量,当提供labels
时返回) — 掩码语言建模 (MLM) 损失。 -
logits (
tf.Tensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前的每个词汇token的分数)。 -
hidden_states (
tuple(tf.Tensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —tf.Tensor
元组(每个嵌入输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始嵌入输出处的隐藏状态。
-
attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
TFRobertaForMaskedLM 前向方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFRobertaForMaskedLM
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = TFRobertaForMaskedLM.from_pretrained("FacebookAI/roberta-base")
>>> 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'
TFRobertaForSequenceClassification
class transformers.TFRobertaForSequenceClassification
< 源代码 >( config *inputs **kwargs )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。
带有序列分类/回归头的 RoBERTa 模型转换器(池化输出顶部的线性层),例如用于 GLUE 任务。
此模型继承自 TFPreTrainedModel。 请查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 源代码 >( 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.TFSequenceClassifierOutput 或 tuple(tf.Tensor)
参数
- input_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列token的索引。可以使用 AutoTokenizer 获取索引。 请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode() 了解详细信息。
- attention_mask (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在 padding token 索引上执行 attention 的掩码。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 被掩盖。
- token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — Segment token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
Numpy array
或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)
,可选) — 用于 nullify self-attention 模块中选定 head 的掩码。掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- inputs_embeds (
tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为相关的向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有 attention 层的 attention tensors。有关更多详细信息,请参阅返回的 tensors 下的attentions
。此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - output_hidden_states (
bool
,可选) — 是否返回所有层的 hidden states。有关更多详细信息,请参阅返回的 tensors 下的hidden_states
。此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通 tuple。此参数可以在 eager 模式下使用,在 graph 模式下该值将始终设置为 True。 - training (
bool
,可选,默认为False
) — 是否在训练模式下使用模型(某些模块如 dropout 模块在训练和评估之间具有不同的行为)。 - labels (
tf.Tensor
,形状为(batch_size,)
,可选) — 用于计算序列分类/回归损失的标签。索引应在[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
的 tuple(如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
tf.Tensor
,形状为(batch_size, )
,可选,当提供labels
时返回) — 分类(或回归,如果 config.num_labels==1)损失。 -
logits (
tf.Tensor
,形状为(batch_size, config.num_labels)
) — 分类(或回归,如果 config.num_labels==1)得分(在 SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —tf.Tensor
元组(每个嵌入输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始嵌入输出处的隐藏状态。
-
attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
TFRobertaForSequenceClassification 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFRobertaForSequenceClassification
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("cardiffnlp/twitter-roberta-base-emotion")
>>> model = TFRobertaForSequenceClassification.from_pretrained("cardiffnlp/twitter-roberta-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]
'optimism'
>>> # 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 = TFRobertaForSequenceClassification.from_pretrained("cardiffnlp/twitter-roberta-base-emotion", num_labels=num_labels)
>>> labels = tf.constant(1)
>>> loss = model(**inputs, labels=labels).loss
>>> round(float(loss), 2)
0.08
TFRobertaForMultipleChoice
class transformers.TFRobertaForMultipleChoice
< source >( config *inputs **kwargs )
参数
- config (RobertaConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有置于顶部的多项选择分类头的 Roberta 模型(池化输出顶部的线性层和一个 softmax),例如用于 RocStories/SWAG 任务。
此模型继承自 TFPreTrainedModel。 请查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 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 或 tuple(tf.Tensor)
参数
- input_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, num_choices, sequence_length)
) — 词汇表中输入序列 token 的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (
Numpy array
或tf.Tensor
,形状为(batch_size, num_choices, sequence_length)
,可选) — 用于避免在 padding token 索引上执行 attention 的掩码。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 被掩盖。
- token_type_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, num_choices, sequence_length)
,可选) — Segment token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
Numpy array
或tf.Tensor
,形状为(batch_size, num_choices, sequence_length)
,可选) — 位置嵌入中每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
Numpy array
或tf.Tensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于 nullify self-attention 模块中选定 head 的掩码。掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- inputs_embeds (
tf.Tensor
,形状为(batch_size, num_choices, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为相关的向量,这将非常有用。 - output_attentions (
bool
,可选) — 是否返回所有 attention 层的 attention tensors。有关更多详细信息,请参阅返回的 tensors 下的attentions
。此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - output_hidden_states (
bool
,可选) — 是否返回所有层的 hidden states。有关更多详细信息,请参阅返回的 tensors 下的hidden_states
。此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通 tuple。此参数可以在 eager 模式下使用,在 graph 模式下该值将始终设置为 True。 - training (
bool
,可选,默认为False
) — 是否在训练模式下使用模型(某些模块如 dropout 模块在训练和评估之间具有不同的行为)。 - labels (
tf.Tensor
,形状为(batch_size,)
,可选) — 用于计算多项选择分类损失的标签。索引应在[0, ..., num_choices]
中,其中num_choices
是输入 tensors 的第二个维度的大小。(参见上面的input_ids
)
返回值
transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput 或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput 或一个 tf.Tensor
的 tuple(如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (
tf.Tensor
,形状为 (batch_size, ),可选,当提供labels
时返回) — 分类损失。 -
logits (
tf.Tensor
,形状为(batch_size, num_choices)
) — num_choices 是输入 tensors 的第二个维度。(参见上面的 input_ids)。分类得分(在 SoftMax 之前)。
-
hidden_states (
tuple(tf.Tensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —tf.Tensor
元组(每个嵌入输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始嵌入输出处的隐藏状态。
-
attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
TFRobertaForMultipleChoice 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFRobertaForMultipleChoice
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = TFRobertaForMultipleChoice.from_pretrained("FacebookAI/roberta-base")
>>> 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
TFRobertaForTokenClassification
class transformers.TFRobertaForTokenClassification
< source >( config *inputs **kwargs )
参数
- config (RobertaConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
RoBERTa 模型,顶部带有一个 token 分类头(位于 hidden-states 输出之上的线性层),例如,用于命名实体识别 (NER) 任务。
此模型继承自 TFPreTrainedModel。 请查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 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 或 tuple(tf.Tensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
, optional) — 避免在 padding token 索引上执行 attention 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩盖,
- 0 表示 tokens 已被掩盖。
- token_type_ids (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
, optional) — 分段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
, optional) — 每个输入序列 tokens 在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (形状为
(num_heads,)
或(num_layers, num_heads)
的Numpy array
或tf.Tensor
, optional) — 用于 nullify 自注意力模块的选定 head 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 已被掩盖。
- inputs_embeds (形状为
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, optional) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, optional) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的attentions
。 此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - output_hidden_states (
bool
, optional) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的hidden_states
。 此参数只能在 eager 模式下使用,在 graph 模式下将使用 config 中的值。 - return_dict (
bool
, optional) — 是否返回 ModelOutput 而不是普通的 tuple。 此参数可以在 eager 模式下使用,在 graph 模式下,该值将始终设置为 True。 - training (
bool
, optional, 默认为False
) — 是否在训练模式下使用模型(dropout 模块等某些模块在训练和评估之间具有不同的行为)。 - labels (形状为
(batch_size, sequence_length)
的tf.Tensor
, optional) — 用于计算 token 分类损失的标签。 索引应为[0, ..., config.num_labels - 1]
。
返回值
transformers.modeling_tf_outputs.TFTokenClassifierOutput 或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFTokenClassifierOutput 或一个 tf.Tensor
的 tuple(如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
loss (形状为
(n,)
的tf.Tensor
, optional, 其中 n 是未掩盖标签的数量,当提供labels
时返回) — 分类损失。 -
logits (形状为
(batch_size, sequence_length, config.num_labels)
的tf.Tensor
) — 分类得分(SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —tf.Tensor
元组(每个嵌入输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始嵌入输出处的隐藏状态。
-
attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
TFRobertaForTokenClassification forward 方法,覆盖了 __call__
特殊方法。
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFRobertaForTokenClassification
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("ydshieh/roberta-large-ner-english")
>>> model = TFRobertaForTokenClassification.from_pretrained("ydshieh/roberta-large-ner-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
['O', 'ORG', 'ORG', 'O', 'O', 'O', 'O', 'O', 'LOC', 'O', 'LOC', 'LOC']
TFRobertaForQuestionAnswering
class transformers.TFRobertaForQuestionAnswering
< source >( config *inputs **kwargs )
参数
- config (RobertaConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
RoBERTa 模型,顶部带有一个 span 分类头,用于抽取式问答任务,如 SQuAD(位于 hidden-states 输出之上的线性层,用于计算 span start logits
和 span end logits
)。
此模型继承自 TFPreTrainedModel。 请查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。
此模型也是 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 函数一样传递输入!
call
< 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 或 tuple(tf.Tensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- attention_mask (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
, optional) — 避免在 padding token 索引上执行 attention 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩盖,
- 0 表示 tokens 已被掩盖。
- token_type_ids (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
, optional) — 分段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (形状为
(batch_size, sequence_length)
的Numpy array
或tf.Tensor
, optional) — 每个输入序列 tokens 在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (形状为
(num_heads,)
或(num_layers, num_heads)
的Numpy array
或tf.Tensor
, optional) — 用于 nullify 自注意力模块的选定 head 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 已被掩盖。
- inputs_embeds (形状为
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的attentions
。 此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的hidden_states
。 此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。 此参数可以在 eager 模式下使用,在 graph 模式下该值将始终设置为 True。 - training (
bool
, 可选, 默认为False
) — 是否在训练模式下使用模型(某些模块(如 dropout 模块)在训练和评估之间具有不同的行为)。 - start_positions (形状为
(batch_size,)
的tf.Tensor
, 可选) — 用于计算 token 分类损失的带标签跨度起点的标签(索引)。 位置被限制在序列的长度 (sequence_length
) 内。 序列之外的位置不计入损失计算。 - end_positions (形状为
(batch_size,)
的tf.Tensor
, 可选) — 用于计算 token 分类损失的带标签跨度终点的标签(索引)。 位置被限制在序列的长度 (sequence_length
) 内。 序列之外的位置不计入损失计算。
返回值
transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput or tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或一个 tf.Tensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含取决于配置 (RobertaConfig) 和输入的各种元素。
-
loss (形状为
(batch_size, )
的tf.Tensor
, 可选, 当提供start_positions
和end_positions
时返回) — 总跨度提取损失是起始位置和结束位置的交叉熵之和。 -
start_logits (形状为
(batch_size, sequence_length)
的tf.Tensor
) — 跨度起始分数 (在 SoftMax 之前)。 -
end_logits (形状为
(batch_size, sequence_length)
的tf.Tensor
) — 跨度结束分数 (在 SoftMax 之前)。 -
hidden_states (
tuple(tf.Tensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —tf.Tensor
元组(每个嵌入输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始嵌入输出处的隐藏状态。
-
attentions (
tuple(tf.Tensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) —tf.Tensor
元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
The TFRobertaForQuestionAnswering forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, TFRobertaForQuestionAnswering
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("ydshieh/roberta-base-squad2")
>>> model = TFRobertaForQuestionAnswering.from_pretrained("ydshieh/roberta-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)
' puppet'
FlaxRobertaModel
class transformers.FlaxRobertaModel
< source >( config: RobertaConfig input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (RobertaConfig) — 模型配置类,包含模型的所有参数。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法以加载模型权重。
裸 RoBERTa 模型转换器输出原始隐藏状态,顶部没有任何特定的头部。
此模型继承自 FlaxPreTrainedModel。 查看超类文档以获取库为其所有模型实现的通用方法(例如,从 PyTorch 模型下载、保存和转换权重)
此模型也是 flax.linen.Module 的子类。 将其用作常规的 Flax linen Module,并参阅 Flax 文档以了解与一般用法和行为相关的所有事项。
Finally, this model supports inherent JAX features such as
__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: <function PRNGKey at 0x7f787eb14310> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 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
, 可选) — 避免对 padding token 索引执行注意力的掩码。 在[0, 1]
中选择的掩码值:- 1 表示 token 未被掩蔽,
- 0 表示 token 被掩蔽。
- token_type_ids (形状为
(batch_size, sequence_length)
的numpy.ndarray
, 可选) — 分段 token 索引,用于指示输入的第一个和第二个部分。 索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (形状为
(batch_size, sequence_length)
的numpy.ndarray
, 可选) — 每个输入序列 token 在位置嵌入中的位置索引。 在[0, config.max_position_embeddings - 1]
范围内选择。 - head_mask (形状为
(batch_size, sequence_length)
的numpy.ndarray
,可选
) -- 用于 nullify 注意力模块的选定头的掩码。 在[0, 1]
中选择的掩码值:- 1 表示 head 未被掩蔽,
- 0 表示 head 被掩蔽。
- return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。
返回值
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling or tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或一个 torch.FloatTensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含取决于配置 (RobertaConfig) 和输入的各种元素。
-
last_hidden_state (形状为
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
) — 模型最后一层输出的隐藏状态序列。 -
pooler_output (形状为
(batch_size, hidden_size)
的jnp.ndarray
) — 序列的第一个 token(分类 token)的最后一层隐藏状态,通过线性层和 Tanh 激活函数进一步处理。 线性层权重通过预训练期间的下一句预测(分类)目标进行训练。 -
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
The FlaxRobertaPreTrainedModel
forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxRobertaModel
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = FlaxRobertaModel.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
FlaxRobertaForCausalLM
class transformers.FlaxRobertaForCausalLM
< source >( config: RobertaConfig input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (RobertaConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。
带有语言建模头的 Roberta 模型(在隐藏状态输出之上有一个线性层),例如用于自回归任务。
此模型继承自 FlaxPreTrainedModel。 查看超类文档以获取库为其所有模型实现的通用方法(例如,从 PyTorch 模型下载、保存和转换权重)
此模型也是 flax.linen.Module 的子类。 将其用作常规的 Flax linen Module,并参阅 Flax 文档以了解与一般用法和行为相关的所有事项。
Finally, this model supports inherent JAX features such as
__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: <function PRNGKey at 0x7f787eb14310> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。详情请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 用于避免对 padding token 索引执行 attention 的掩码。掩码值在[0, 1]
中选择:- 1 表示 tokens **未被掩码**,
- 0 表示 tokens **被掩码**。
- token_type_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 分段 token 索引,用于指示输入的第一个和第二个部分。索引在[0, 1]
中选择:- 0 对应于 *句子 A* token,
- 1 对应于 *句子 B* token。
- position_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列 token 在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) -- 用于 nullify attention 模块中选定 head 的掩码。掩码值在
[0, 1]` 中选择:- 1 表示 head **未被掩码**,
- 0 表示 head **被掩码**。
- return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通 tuple。
返回值
transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 torch.FloatTensor
的 tuple(如果传递 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
logits (
jnp.ndarray
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇表 token 的分数)。 -
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)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
的 tuple(每个层一个)。注意力 softmax 之后的交叉注意力权重,用于计算交叉注意力头中的加权平均值。
-
past_key_values (
tuple(tuple(jnp.ndarray))
,可选,当传递use_cache=True
或当config.use_cache=True
时返回) — 长度为config.n_layers
的jnp.ndarray
tuple 的元组,如果模型在 encoder-decoder 设置中使用,则每个 tuple 包含 self-attention 和 cross-attention 层的缓存 key, value 状态。仅当config.is_decoder = True
时相关。包含预计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码(请参阅
past_key_values
输入)。
The FlaxRobertaPreTrainedModel
forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxRobertaForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = FlaxRobertaForCausalLM.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)
>>> # retrieve logts for next token
>>> next_token_logits = outputs.logits[:, -1]
FlaxRobertaForMaskedLM
class transformers.FlaxRobertaForMaskedLM
< 源码 >( config: RobertaConfig input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (RobertaConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。
带有 language modeling
头的 RoBERTa 模型。
此模型继承自 FlaxPreTrainedModel。 查看超类文档以获取库为其所有模型实现的通用方法(例如,从 PyTorch 模型下载、保存和转换权重)
此模型也是 flax.linen.Module 的子类。 将其用作常规的 Flax linen Module,并参阅 Flax 文档以了解与一般用法和行为相关的所有事项。
Finally, this model supports inherent JAX features such as
__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: <function PRNGKey at 0x7f787eb14310> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling or tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。详情请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 用于避免对 padding token 索引执行 attention 的掩码。掩码值在[0, 1]
中选择:- 1 表示 tokens **未被掩码**,
- 0 表示 tokens **被掩码**。
- token_type_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 分段 token 索引,用于指示输入的第一个和第二个部分。索引在[0, 1]
中选择:- 0 对应于 *句子 A* token,
- 1 对应于 *句子 B* token。
- position_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列 token 在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) -- 用于 nullify attention 模块中选定 head 的掩码。掩码值在
[0, 1]` 中选择:- 1 表示 head **未被掩码**,
- 0 表示 head **被掩码**。
- return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是普通 tuple。
返回值
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling or tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或一个 torch.FloatTensor
元组 (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含取决于配置 (RobertaConfig) 和输入的各种元素。
-
last_hidden_state (形状为
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
) — 模型最后一层输出的隐藏状态序列。 -
pooler_output (形状为
(batch_size, hidden_size)
的jnp.ndarray
) — 序列的第一个 token(分类 token)的最后一层隐藏状态,通过线性层和 Tanh 激活函数进一步处理。 线性层权重通过预训练期间的下一句预测(分类)目标进行训练。 -
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
The FlaxRobertaPreTrainedModel
forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxRobertaForMaskedLM
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = FlaxRobertaForMaskedLM.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("The capital of France is [MASK].", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxRobertaForSequenceClassification
class transformers.FlaxRobertaForSequenceClassification
< 源码 >( config: RobertaConfig input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (RobertaConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。
带有序列分类/回归头的 Roberta 模型 transformer(在 pooled output 之上有一个线性层),例如用于 GLUE 任务。
此模型继承自 FlaxPreTrainedModel。 查看超类文档以获取库为其所有模型实现的通用方法(例如,从 PyTorch 模型下载、保存和转换权重)
此模型也是 flax.linen.Module 的子类。 将其用作常规的 Flax linen Module,并参阅 Flax 文档以了解与一般用法和行为相关的所有事项。
Finally, this model supports inherent JAX features such as
__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: <function PRNGKey at 0x7f787eb14310> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 详见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以了解详情。
- attention_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 掩码,用于避免对 padding token 索引执行 attention。掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩码,
- 0 表示 tokens 已被掩码。
- token_type_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列 token 在位置嵌入中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选
) -- 用于 nullify attention 模块中选定的 head。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩码,
- 0 表示 head 已被掩码。
- return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是纯 tuple。
返回值
transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或一个 torch.FloatTensor
的 tuple (如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
logits (
jnp.ndarray
,形状为(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 之后的注意力权重,用于计算自注意力头中的加权平均值。
The FlaxRobertaPreTrainedModel
forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxRobertaForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = FlaxRobertaForSequenceClassification.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxRobertaForMultipleChoice
class transformers.FlaxRobertaForMultipleChoice
< source >( config: RobertaConfig input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。
带有置于顶部的多项选择分类头的 Roberta 模型(池化输出顶部的线性层和一个 softmax),例如用于 RocStories/SWAG 任务。
此模型继承自 FlaxPreTrainedModel。 查看超类文档以获取库为其所有模型实现的通用方法(例如,从 PyTorch 模型下载、保存和转换权重)
此模型也是 flax.linen.Module 的子类。 将其用作常规的 Flax linen Module,并参阅 Flax 文档以了解与一般用法和行为相关的所有事项。
Finally, this model supports inherent JAX features such as
__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: <function PRNGKey at 0x7f787eb14310> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
,形状为(batch_size, num_choices, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 详见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以了解详情。
- attention_mask (
numpy.ndarray
,形状为(batch_size, num_choices, sequence_length)
,可选) — 掩码,用于避免对 padding token 索引执行 attention。掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩码,
- 0 表示 tokens 已被掩码。
- token_type_ids (
numpy.ndarray
,形状为(batch_size, num_choices, sequence_length)
,可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
numpy.ndarray
,形状为(batch_size, num_choices, sequence_length)
,可选) — 每个输入序列 tokens 在位置嵌入中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
numpy.ndarray
,形状为(batch_size, num_choices, sequence_length)
,可选
) -- 用于 nullify attention 模块中选定的 head。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩码,
- 0 表示 head 已被掩码。
- return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是纯 tuple。
返回值
transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput 或一个 torch.FloatTensor
的 tuple (如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
The FlaxRobertaPreTrainedModel
forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxRobertaForMultipleChoice
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = FlaxRobertaForMultipleChoice.from_pretrained("FacebookAI/roberta-base")
>>> 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
FlaxRobertaForTokenClassification
class transformers.FlaxRobertaForTokenClassification
< source >( config: RobertaConfig input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。
带有 token classification head 的 Roberta 模型(在 hidden-states 输出之上的一个线性层),例如用于命名实体识别 (NER) 任务。
此模型继承自 FlaxPreTrainedModel。 查看超类文档以获取库为其所有模型实现的通用方法(例如,从 PyTorch 模型下载、保存和转换权重)
此模型也是 flax.linen.Module 的子类。 将其用作常规的 Flax linen Module,并参阅 Flax 文档以了解与一般用法和行为相关的所有事项。
Finally, this model supports inherent JAX features such as
__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: <function PRNGKey at 0x7f787eb14310> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxTokenClassifierOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以了解详情。
- attention_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 避免在 padding token 索引上执行 attention 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩盖,
- 0 表示 tokens 被掩盖。
- token_type_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — Segment token 索引,用于指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 位置 embeddings 中每个输入序列 tokens 的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选
) -- 用于 nullify attention 模块中选定 head 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是纯粹的 tuple。
返回值
transformers.modeling_flax_outputs.FlaxTokenClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxTokenClassifierOutput 或一个 torch.FloatTensor
的 tuple (如果传递了 return_dict=False
或者当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
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 之后的注意力权重,用于计算自注意力头中的加权平均值。
The FlaxRobertaPreTrainedModel
forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxRobertaForTokenClassification
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = FlaxRobertaForTokenClassification.from_pretrained("FacebookAI/roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxRobertaForQuestionAnswering
class transformers.FlaxRobertaForQuestionAnswering
< source >( config: RobertaConfig input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
- config (RobertaConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法以加载模型权重。
带有 span classification head 的 Roberta 模型,用于抽取式问答任务,如 SQuAD(在 hidden-states 输出之上的线性层,用于计算 span start logits
和 span end logits
)。
此模型继承自 FlaxPreTrainedModel。 查看超类文档以获取库为其所有模型实现的通用方法(例如,从 PyTorch 模型下载、保存和转换权重)
此模型也是 flax.linen.Module 的子类。 将其用作常规的 Flax linen Module,并参阅 Flax 文档以了解与一般用法和行为相关的所有事项。
Finally, this model supports inherent JAX features such as
__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: <function PRNGKey at 0x7f787eb14310> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None past_key_values: dict = None ) → transformers.modeling_flax_outputs.FlaxQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以了解详情。
- attention_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 避免在 padding token 索引上执行 attention 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩盖,
- 0 表示 tokens 被掩盖。
- token_type_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — Segment token 索引,用于指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 位置 embeddings 中每个输入序列 tokens 的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - head_mask (
numpy.ndarray
,形状为(batch_size, sequence_length)
,可选
) -- 用于 nullify attention 模块中选定 head 的掩码。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是纯粹的 tuple。
返回值
transformers.modeling_flax_outputs.FlaxQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxQuestionAnsweringModelOutput 或一个 torch.FloatTensor
的 tuple (如果传递了 return_dict=False
或者当 config.return_dict=False
时),包含各种元素,具体取决于配置 (RobertaConfig) 和输入。
-
start_logits (
jnp.ndarray
,形状为(batch_size, sequence_length)
) — Span-start 得分(SoftMax 之前)。 -
end_logits (
jnp.ndarray
,形状为(batch_size, sequence_length)
) — Span-end 得分(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 之后的注意力权重,用于计算自注意力头中的加权平均值。
The FlaxRobertaPreTrainedModel
forward method, overrides the __call__
special method.
尽管 forward 传递的配方需要在该函数内定义,但应该在之后调用 Module
实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FlaxRobertaForQuestionAnswering
>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> model = FlaxRobertaForQuestionAnswering.from_pretrained("FacebookAI/roberta-base")
>>> 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