Transformers 4.37 中文文档(三十)(1)

简介: Transformers 4.37 中文文档(三十)


原文:huggingface.co/docs/transformers

DPR

原文:huggingface.co/docs/transformers/v4.37.2/en/model_doc/dpr

概述

Dense Passage Retrieval(DPR)是用于最先进的开放域问答研究的一组工具和模型。它是由 Vladimir  Karpukhin、Barlas Oğuz、Sewon Min、Patrick Lewis、Ledell Wu、Sergey  Edunov、Danqi Chen、Wen-tau Yih 在用于开放域问答的密集段落检索中介绍的。

该论文的摘要如下:

开放域问答依赖于高效的段落检索来选择候选上下文,传统的稀疏向量空间模型,如 TF-IDF 或  BM25,是事实上的方法。在这项工作中,我们展示了检索可以仅使用密集表示来实现,其中通过简单的双编码器框架从少量问题和段落中学习嵌入。在广泛的开放域  QA 数据集上评估时,我们的密集检索器在前 20 个段落检索准确性方面大幅优于强大的 Lucene-BM25 系统,帮助我们的端到端 QA  系统在多个开放域 QA 基准上建立了新的最先进水平。

此模型由lhoestq贡献。原始代码可在此处找到。

使用提示

  • DPR 包括三个模型:
  • 问题编码器:将问题编码为向量
  • 上下文编码器:将上下文编码为向量
  • 阅读器:提取检索到的上下文中问题的答案,以及相关性得分(如果推断的跨度实际上回答了问题,则得分高)。

DPRConfig

class transformers.DPRConfig

<来源>

( vocab_size = 30522 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 = 0 position_embedding_type = 'absolute' projection_dim: int = 0 **kwargs )

参数

  • vocab_size (int, optional, defaults to 30522) — DPR 模型的词汇表大小。定义了传递给 BertModel 的inputs_ids的不同标记。
  • hidden_size (int, optional, defaults to 768) — 编码器层和池化器层的维度。
  • num_hidden_layers (int, optional, defaults to 12) — Transformer 编码器中的隐藏层数。
  • num_attention_heads (int, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数。
  • intermediate_size (int, optional, defaults to 3072) — Transformer 编码器中“中间”(即前馈)层的维度。
  • hidden_act (str or function, optional, defaults to "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu""relu""silu""gelu_new"
  • hidden_dropout_prob (float, optional, defaults to 0.1) — 嵌入、编码器和池化器中所有全连接层的丢弃概率。
  • attention_probs_dropout_prob (float, optional, defaults to 0.1) — 注意力概率的丢弃比率。
  • max_position_embeddings (int, optional, defaults to 512) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如 512、1024 或 2048)。
  • type_vocab_size (int, optional, defaults to 2) — 传递给 BertModel 的token_type_ids的词汇表大小。
  • initializer_range (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-12) — 层归一化层使用的 epsilon。
  • pad_token_id (int, 可选, 默认为 0) — 填充标记 id。
  • 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.)中的Method 4
  • projection_dim (int, 可选, 默认为 0) — 上下文和问题编码器投影的维度。如果设置为零(默认),则不进行投影。

DPRConfig 是用来存储DPRModel配置的配置类。

这是用来存储 DPRContextEncoder、DPRQuestionEncoder 或 DPRReader  配置的配置类。根据指定的参数实例化 DPR 模型的组件,定义模型组件的架构。使用默认值实例化配置将产生类似于 DPRContextEncoder  facebook/dpr-ctx_encoder-single-nq-base架构的配置。

这个类是 BertConfig 的子类。请查看超类以获取所有 kwargs 的文档。

示例:

>>> from transformers import DPRConfig, DPRContextEncoder
>>> # Initializing a DPR facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> configuration = DPRConfig()
>>> # Initializing a model (with random weights) from the facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> model = DPRContextEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

DPRContextEncoderTokenizer

class transformers.DPRContextEncoderTokenizer

< source >

( vocab_file do_lower_case = True do_basic_tokenize = True never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )

构建一个 DPRContextEncoder 分词器。

DPRContextEncoderTokenizer 与 BertTokenizer 相同,进行端到端的标记化:标点符号拆分和 wordpiece。

参考超类 BertTokenizer 以获取用法示例和有关参数的文档。

DPRContextEncoderTokenizerFast

class transformers.DPRContextEncoderTokenizerFast

< source >

( vocab_file = None tokenizer_file = None do_lower_case = True unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )

构建一个“快速”的 DPRContextEncoder 分词器(由 HuggingFace 的tokenizers库支持)。

DPRContextEncoderTokenizerFast 与 BertTokenizerFast 相同,进行端到端的标记化:标点符号拆分和 wordpiece。

参考超类 BertTokenizerFast 以获取用法示例和有关参数的文档。

DPRQuestionEncoderTokenizer

class transformers.DPRQuestionEncoderTokenizer

< source >

( vocab_file do_lower_case = True do_basic_tokenize = True never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )

构建一个 DPRQuestionEncoder 分词器。

DPRQuestionEncoderTokenizer 与 BertTokenizer 相同,并且进行端到端的标记化:标点符号拆分和词片。

有关用法示例和有关参数的文档,请参考超类 BertTokenizer。

DPRQuestionEncoderTokenizerFast

class transformers.DPRQuestionEncoderTokenizerFast

< source >

( vocab_file = None tokenizer_file = None do_lower_case = True unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )

构建一个“快速” DPRQuestionEncoder 分词器(由 HuggingFace 的 tokenizers 库支持)。

DPRQuestionEncoderTokenizerFast 与 BertTokenizerFast 相同,并且进行端到端的标记化:标点符号拆分和词片。

有关用法示例和有关参数的文档,请参考超类 BertTokenizerFast。

DPRReaderTokenizer

class transformers.DPRReaderTokenizer

< source >

( vocab_file do_lower_case = True do_basic_tokenize = True never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs ) → export const metadata = 'undefined';Dict[str, List[List[int]]]

参数

  • questions (strList[str]) — 要编码的问题。您可以为许多段落指定一个问题。在这种情况下,问题将被复制,如 [questions] * n_passages。否则,您必须指定与 titlestexts 中的问题数量相同的问题。
  • titles (strList[str]) — 要编码的段落标题。如果有多个段落,则可以是一个字符串或一个字符串列表。
  • texts (strList[str]) — 要编码的段落文本。如果有多个段落,则可以是一个字符串或一个字符串列表。
  • padding (bool, str 或 PaddingStrategy, 可选,默认为 False) — 激活和控制填充。接受以下值:
  • True'longest':填充到批次中最长的序列(如果只提供了单个序列,则不进行填充)。
  • 'max_length':填充到由参数 max_length 指定的最大长度,或者如果未提供该参数,则填充到模型可接受的最大输入长度。
  • False'do_not_pad'(默认):无填充(即,可以输出长度不同的序列批次)。
  • truncation (bool, str 或 TruncationStrategy, 可选,默认为 False) — 激活和控制截断。接受以下值:
  • True'longest_first':截断到由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列),则将逐个标记截断,从一对序列中最长的序列中删除一个标记。
  • 'only_first':截断到由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列),则只会截断第一个序列。
  • 'only_second':截断到由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列),则只会截断第二个序列。
  • False'do_not_truncate'(默认):无截断(即,可以输出长度大于模型最大可接受输入大小的序列批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一使用的最大长度。
    如果未设置或设置为 None,则将使用预定义的模型最大长度,如果截断/填充参数需要最大长度。如果模型没有特定的最大输入长度(如 XLNet),则截断/填充到最大长度将被停用。
  • return_tensors (str 或 TensorType, 可选) — 如果设置,将返回张量而不是 python 整数列表。可接受的值为:
  • 'tf': 返回 TensorFlow tf.constant 对象。
  • 'pt': 返回 PyTorch torch.Tensor 对象。
  • 'np': 返回 Numpy np.ndarray 对象。
  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果未设置,将根据特定标记器的默认值返回注意力掩码,该默认值由 return_outputs 属性定义。
    什么是注意力掩码?

返回

Dict[str, List[List[int]]]

一个带有以下键的字典:

  • input_ids: 要提供给模型的标记 id 列表。
  • attention_mask: 指定哪些标记应该被模型关注的索引列表。

构建一个 DPRReader 标记器。

DPRReaderTokenizer 几乎与 BertTokenizer 相同,并且进行端到端的标记化:标点符号拆分和 wordpiece。不同之处在于它有三个输入字符串:问题、标题和文本,这些字符串被组合在一起供 DPRReader 模型使用。

有关用法示例和参数文档,请参考超类 BertTokenizer。

返回一个字典,其中包含输入字符串的标记 id 和其他信息,以提供给 .decode_best_spans。它使用标记器和词汇将问题和不同段落(标题和文本)的字符串转换为 ID(整数)序列。生成的 input_ids 是大小为 (n_passages, sequence_length) 的矩阵。

格式如下:

[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>

DPRReaderTokenizerFast

class transformers.DPRReaderTokenizerFast

< source >

( vocab_file = None tokenizer_file = None do_lower_case = True unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs ) → export const metadata = 'undefined';Dict[str, List[List[int]]]

参数

  • questions (strList[str]) — 要编码的问题。您可以为许多段落指定一个问题。在这种情况下,问题将被复制,如 [questions] * n_passages。否则,您必须指定与 titlestexts 中相同数量的问题。
  • titles (strList[str]) — 要编码的段落标题。如果有多个段落,则可以是字符串或字符串列表。
  • texts (strList[str]) — 要编码的段落文本。如果有多个段落,则可以是字符串或字符串列表。
  • padding (bool, str 或 PaddingStrategy, 可选, 默认为 False) — 激活和控制填充。接受以下值:
  • True'longest': 填充到批次中最长的序列(如果只提供单个序列,则不填充)。
  • 'max_length': 填充到由参数 max_length 指定的最大长度,或者如果未提供该参数,则填充到模型的最大可接受输入长度。
  • False'do_not_pad'(默认):无填充(即,可以输出具有不同长度序列的批次)。
  • truncation (bool, str 或 TruncationStrategy, 可选, 默认为 False) — 激活和控制截断。接受以下值:
  • True'longest_first':截断到指定的最大长度,该长度由参数 max_length 指定,或者如果未提供该参数,则截断到模型的最大可接受输入长度。这将逐个标记截断,如果提供了一对序列(或一批对序列),则从最长序列中删除一个标记。
  • 'only_first':截断到指定的最大长度,该长度由参数 max_length 指定,或者如果未提供该参数,则截断到模型的最大可接受输入长度。这将仅截断一对序列中的第一个序列,如果提供了一对序列(或一批对序列)。
  • 'only_second':截断到指定的最大长度,该长度由参数 max_length 指定,或者如果未提供该参数,则截断到模型的最大可接受输入长度。这将仅截断一对序列中的第二个序列,如果提供了一对序列(或一批对序列)。
  • False'do_not_truncate'(默认):不截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一使用的最大长度。
    如果未设置或设置为 None,则将使用预定义的模型最大长度(如果截断/填充参数需要最大长度)。如果模型没有特定的最大输入长度(如 XLNet),则将禁用截断/填充到最大长度。
  • return_tensors (str 或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
  • 'tf':返回 TensorFlow tf.constant 对象。
  • 'pt':返回 PyTorch torch.Tensor 对象。
  • 'np':返回 Numpy np.ndarray 对象。
  • return_attention_mask (bool, 可选) — 是否返回注意力蒙版。如果未设置,将根据特定分词器的默认值返回注意力蒙版,由 return_outputs 属性定义。
    什么是注意力蒙版?

返回

Dict[str, List[List[int]]]

一个包含以下键的字典:

  • input_ids:要馈送给模型的标记 ID 列表。
  • attention_mask:指定哪些标记应该被模型关注的索引列表。

构建一个“快速” DPRReader 分词器(由 HuggingFace 的 tokenizers 库支持)。

DPRReaderTokenizerFast 几乎与 BertTokenizerFast 相同,并且运行端到端的分词:标点符号拆分和词片。不同之处在于它有三个输入字符串:问题、标题和文本,这些字符串被组合在一起馈送给 DPRReader 模型。

参考超类 BertTokenizerFast 以获取用法示例和有关参数的文档。

返回一个包含输入字符串的标记 ID 和其他信息以提供给 .decode_best_spans 的字典。它将问题和不同段落(标题和文本)的字符串转换为 ID(整数)序列,使用分词器和词汇表。生成的 input_ids 是一个大小为 (n_passages, sequence_length) 的矩阵,格式如下:

[CLS] <问题标记 ID> [SEP] <标题 ID> [SEP] <文本 ID>

DPR 特定输出

class transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput

<来源>

( pooler_output: FloatTensor hidden_states: Optional = None attentions: Optional = None )

参数

  • pooler_output (torch.FloatTensor,形状为(batch_size, embeddings_size)) — DPR 编码器输出pooler_output对应于上下文表示。序列的第一个标记(分类标记)的最后一层隐藏状态,进一步由线性层处理。此输出用于将上下文嵌入到问题嵌入的最近邻查询中。
  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入输出,一个用于每一层的输出)。
    模型在每一层输出的隐藏状态以及初始嵌入输出。
  • attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

DPRQuestionEncoder 的输出类。

class transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput

<来源>

( pooler_output: FloatTensor hidden_states: Optional = None attentions: Optional = None )

参数

  • pooler_output (torch.FloatTensor,形状为(batch_size, embeddings_size)) — DPR 编码器输出pooler_output对应于问题表示。序列的第一个标记(分类标记)的最后一层隐藏状态,进一步由线性层处理。此输出用于将问题嵌入到上下文嵌入的最近邻查询中。
  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入输出,一个用于每一层的输出)。
    模型在每一层输出的隐藏状态以及初始嵌入输出。
  • attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

DPRQuestionEncoder 的输出类。

class transformers.DPRReaderOutput

<来源>

( start_logits: FloatTensor end_logits: FloatTensor = None relevance_logits: FloatTensor = None hidden_states: Optional = None attentions: Optional = None )

参数

  • start_logits (torch.FloatTensor,形状为(n_passages, sequence_length)) — 每个段落跨度的开始索引的 logits。
  • end_logits (torch.FloatTensor,形状为(n_passages, sequence_length)) — 每个段落跨度的结束索引的 logits。
  • relevance_logits (torch.FloatTensor,形状为(n_passages, )) — DPRReader 的 QA 分类器的输出,对应于每个段落回答问题的分数,与所有其他段落进行比较。
  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入输出,一个用于每一层的输出)。
    模型在每一层输出的隐藏状态以及初始嵌入输出。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) - 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每个层一个)。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

用于 DPRQuestionEncoder 的输出类。

Pytorch 隐藏 Pytorch 内容

DPRContextEncoder

class transformers.DPRContextEncoder

<来源>

( config: DPRConfig )

参数

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

裸的 DPRContextEncoder 变压器输出池化器输出作为上下文表示。

该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

该模型还是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor) - 词汇表中输入序列标记的索引。为了匹配预训练,DPR 输入序列应按照以下格式进行格式化:[CLS]和[SEP]标记。
    (a)对于序列对(例如标题+文本对):

返回

transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput 或tuple(torch.FloatTensor)

一个 transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(DPRConfig)和输入的各种元素。

  • pooler_output(形状为(batch_size, embeddings_size)torch.FloatTensor) - DPR 编码器输出对应于上下文表示的pooler_output。序列的第一个标记(分类标记)的最后一层隐藏状态,进一步由线性层处理。此输出用于嵌入上下文以进行最近邻查询与问题嵌入。
  • hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) - 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出 + 一个用于每个层的输出)。
    模型在每个层的输出以及初始嵌入输出的隐藏状态。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) - 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

>>> from transformers import DPRContextEncoder, DPRContextEncoderTokenizer
>>> tokenizer = DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> model = DPRContextEncoder.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output

DPRQuestionEncoder

class transformers.DPRQuestionEncoder

<来源>

( config: DPRConfig )

参数

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

裸的 DPRQuestionEncoder 变压器输出池化器输出作为问题表示。

这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。为了匹配预训练,DPR 输入序列应该按照以下格式进行格式化,包括[CLS]和[SEP]标记:
    (a) 对于序列对(例如标题+文本对):

返回

transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput 或tuple(torch.FloatTensor)

一个 transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(DPRConfig)和输入的各种元素。

  • pooler_output (torch.FloatTensor,形状为(batch_size, embeddings_size)) — DPR 编码器输出pooler_output对应于问题表示。序列的第一个标记(分类标记)的最后一层隐藏状态,进一步由线性层处理。此输出用于嵌入问题以进行带有上下文嵌入的最近邻查询。
  • hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入输出,一个用于每一层的输出)。
    模型在每一层输出的隐藏状态加上初始嵌入输出。
  • attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

>>> from transformers import DPRQuestionEncoder, DPRQuestionEncoderTokenizer
>>> tokenizer = DPRQuestionEncoderTokenizer.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> model = DPRQuestionEncoder.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output


Transformers 4.37 中文文档(三十)(2)https://developer.aliyun.com/article/1564673

相关文章
|
4月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(四十)(8)
Transformers 4.37 中文文档(四十)
26 2
|
4月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(四十)(7)
Transformers 4.37 中文文档(四十)
38 2
|
4月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(四十)(9)
Transformers 4.37 中文文档(四十)
29 2
|
4月前
|
机器学习/深度学习 存储 索引
Transformers 4.37 中文文档(四十)(3)
Transformers 4.37 中文文档(四十)
47 1
|
4月前
|
缓存 PyTorch API
Transformers 4.37 中文文档(四十)(2)
Transformers 4.37 中文文档(四十)
105 1
|
4月前
|
索引
Transformers 4.37 中文文档(四十)(5)
Transformers 4.37 中文文档(四十)
23 1
|
4月前
|
机器学习/深度学习 缓存 PyTorch
Transformers 4.37 中文文档(四十)(4)
Transformers 4.37 中文文档(四十)
42 1
|
4月前
|
并行计算 PyTorch 算法框架/工具
Transformers 4.37 中文文档(四十)(6)
Transformers 4.37 中文文档(四十)
31 1
|
4月前
|
缓存 PyTorch 算法框架/工具
Transformers 4.37 中文文档(四十)(1)
Transformers 4.37 中文文档(四十)
51 1
|
4月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(三十六)(3)
Transformers 4.37 中文文档(三十六)
37 1