Transformers 4.37 中文文档(五十四)(2)https://developer.aliyun.com/article/1565373
ReformerConfig
class transformers.ReformerConfig
( attention_head_size = 64 attn_layers = ['local', 'lsh', 'local', 'lsh', 'local', 'lsh'] axial_norm_std = 1.0 axial_pos_embds = True axial_pos_shape = [64, 64] axial_pos_embds_dim = [64, 192] chunk_size_lm_head = 0 eos_token_id = 2 feed_forward_size = 512 hash_seed = None hidden_act = 'relu' hidden_dropout_prob = 0.05 hidden_size = 256 initializer_range = 0.02 is_decoder = False layer_norm_eps = 1e-12 local_num_chunks_before = 1 local_num_chunks_after = 0 local_attention_probs_dropout_prob = 0.05 local_attn_chunk_length = 64 lsh_attn_chunk_length = 64 lsh_attention_probs_dropout_prob = 0.0 lsh_num_chunks_before = 1 lsh_num_chunks_after = 0 max_position_embeddings = 4096 num_attention_heads = 12 num_buckets = None num_hashes = 1 pad_token_id = 0 vocab_size = 320 tie_word_embeddings = False use_cache = True classifier_dropout = None **kwargs )
参数
attention_head_size
(int
, 可选, 默认为 64) — 投影键、查询和值向量的维度attn_layers
(List[str]
, 可选, 默认为["local", "lsh", "local", "lsh", "local", "lsh"]
) — 按升序排列的注意力层类型列表。可以在 LSHSelfAttention 层("lsh"
)和 LocalSelfAttention 层("local"
)之间进行选择。
有关 LSHSelfAttention 层的更多信息,请参阅 LSH Self Attention。有关 LocalSelfAttention 层的更多信息,请参阅 Local Self Attention。axial_pos_embds
(bool
, 可选, 默认为True
) — 是否使用轴向位置嵌入。有关轴向位置嵌入工作原理的更多信息,请参阅 Axial Position Encodings。axial_norm_std
(float
, 可选, 默认为 1.0) — 用于初始化轴向位置编码的权重矩阵的正态初始化器的标准差。axial_pos_shape
(List[int]
, 可选, 默认为[64, 64]
) — 轴向位置编码的位置维度。在训练过程中,位置维度的乘积必须等于序列长度。
有关轴向位置编码工作原理的更多信息,请参阅 Axial Position Encodings。axial_pos_embds_dim
(List[int]
, optional, defaults to[64, 192]
) — 轴向位置编码的嵌入维度。嵌入维度之和必须等于隐藏大小。
有关轴向位置编码的更多信息,请参阅 Axial Position Encodings。chunk_size_lm_head
(int
, optional, defaults to 0) — 最终语言模型前馈头层的块大小。块大小为 0 表示前馈层未分块。块大小为 n 表示前馈层一次处理 n < 序列长度的嵌入。
有关前馈分块的更多信息,请参阅 How does Feed Forward Chunking work?。eos_token_id
(int
, optional, defaults to 2) — 句子结束标记的标记 ID。feed_forward_size
(int
, optional, defaults to 512) — 残差注意力块中前馈层的维度。hash_seed
(int
, optional) — 可用于使LSHSelfAttention
中的局部敏感哈希确定性的种子。这仅应用于测试目的。在评估和训练过程中,应将hash_seed
设置为None
,以确保局部敏感哈希方案中完全随机的旋转。hidden_act
(str
orCallable
, optional, defaults to"relu"
) — 残差注意力块中前馈层的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
,"relu"
,"silu"
和"gelu_new"
。hidden_dropout_prob
(float
, optional, defaults to 0.05) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。hidden_size
(int
, optional, defaults to 256) — 残差注意力块的输出隐藏状态的维度。initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。is_decoder
(bool
, optional, defaults toFalse
) — 是否在 ReformerModel 中使用因果掩码。在使用 Reformer 进行因果语言建模时,此参数应设置为True
。layer_norm_eps
(float
, optional, defaults to 1e-12) — 层归一化层使用的 epsilon。local_chunk_length
(int
, optional, defaults to 64) — 在LocalSelfAttention
中自身关注的块的长度。分块可将内存复杂度从序列长度 x 序列长度(自注意力)降低到块长度 x 块长度 x 序列长度 / 块长度(分块自注意力)。local_num_chunks_before
(int
, optional, defaults to 1) — 在LocalSelfAttention
层中要关注的前面相邻块的数量。local_num_chunks_after
(int
, optional, defaults to 0) — 在LocalSelfAttention
层中除自身外要关注的后续相邻块的数量。local_attention_probs_dropout_prob
(float
, optional, defaults to 0.1) —LocalSelfAttention
中注意力概率的 dropout 比例。lsh_attn_chunk_length
(int
, optional, defaults to 64) — 在LSHSelfAttention
中自身关注的块的长度。分块可将内存复杂度从序列长度 x 序列长度(自注意力)降低到块长度 x 块长度 x 序列长度 / 块长度(分块自注意力)。lsh_num_chunks_before
(int
, optional, defaults to 1) — 在LSHSelfAttention
层中要关注的前面相邻块的数量。lsh_num_chunks_after
(int
, optional, defaults to 0) — 在LSHSelfAttention
层中自身关注的后续相邻块的数量。lsh_attention_probs_dropout_prob
(float
, optional, defaults to 0.1) —LSHSelfAttention
中注意力概率的 dropout 比例。max_position_embeddings
(int
, optional, defaults to 4096) — 此模型可能会使用的最大序列长度。通常将其设置为一个较大的值以防万一(例如,512 或 1024 或 2048)。num_attention_heads
(int
, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数。num_buckets
(int
orList[int]
, optional) — 桶的数量,可以使用局部敏感哈希方案将查询向量“哈希”到其中。每个查询键向量被哈希到1, ..., num_buckets
中的一个哈希值。桶的数量也可以分解为一个列表,以提高内存复杂度。在这种情况下,如果num_buckets
分解为两个因子,则每个查询键向量被哈希到1-1, 1-2, ..., num_buckets[0]-1, ..., num_buckets[0]-num_buckets[1]
中的一个哈希值。桶的数量(或因子的乘积)应大致等于序列长度/ lsh_chunk_length。如果未设置num_buckets
,则会动态计算一个良好的值。num_hashes
(int
, optional, defaults to 1) — 局部敏感哈希方案中的哈希轮数(例如,随机旋转的次数)。num_hashes
越高,LSHSelfAttention
越准确,但哈希变得更加耗费内存和时间。pad_token_id
(int
, optional, defaults to 0) — 用于填充标记的标记 ID。vocab_size
(int
, optional, defaults to 320) — Reformer 模型的词汇大小。定义了在调用 ReformerModel 时可以表示的不同标记的数量。tie_word_embeddings
(bool
, optional, defaults toFalse
) — 是否绑定输入和输出嵌入。use_cache
(bool
, optional, defaults toTrue
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。classifier_dropout
(float
, optional) — 分类头的丢失比率。
这是用于存储 ReformerModel 配置的配置类。根据指定的参数实例化 Reformer 模型,定义模型架构。使用默认值实例化配置将产生与 ReFormer google/reformer-crime-and-punishment架构类似的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读来自 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import ReformerConfig, ReformerModel >>> # Initializing a Reformer configuration >>> configuration = ReformerConfig() >>> # Initializing a Reformer model (with random weights) >>> model = ReformerModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
ReformerTokenizer
class transformers.ReformerTokenizer
( vocab_file eos_token = '</s>' unk_token = '<unk>' additional_special_tokens = [] sp_model_kwargs: Optional = None **kwargs )
参数
vocab_file
(str
) — 包含实例化分词器所需词汇表的SentencePiece文件(通常具有*.spm*扩展名)。eos_token
(str
, optional, defaults to""
) — 序列结束标记。
在构建使用特殊标记的序列时,这不是用于序列结束的标记。使用的标记是sep_token
。unk_token
(str
, optional, defaults to""
) — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。additional_special_tokens
(List[str]
, optional, defaults to[]
) — 分词器使用的额外特殊标记。sp_model_kwargs
(dict
,可选)— 将传递给SentencePieceProcessor.__init__()
方法。SentencePiece 的 Python 包装器 可以用于设置:
enable_sampling
:启用子词正则化。nbest_size
:unigram 的抽样参数。对于 BPE-Dropout 无效。
nbest_size = {0,1}
:不执行抽样。nbest_size > 1
:从 nbest_size 结果中抽样。nbest_size < 0
: 假设 nbest_size 是无限的,并使用前向过滤和后向抽样算法从所有假设(格子)中抽样。
alpha
:unigram 抽样的平滑参数,以及 BPE-dropout 合并操作的丢弃概率。
构建一个 Reformer 分词器。基于 SentencePiece。
此分词器继承自 PreTrainedTokenizer,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
ReformerTokenizerFast
class transformers.ReformerTokenizerFast
( vocab_file = None tokenizer_file = None eos_token = '</s>' unk_token = '<unk>' additional_special_tokens = [] **kwargs )
参数
vocab_file
(str
)— 包含实例化分词器所需词汇表的 SentencePiece 文件(通常具有 .spm 扩展名)。eos_token
(str
,可选,默认为""
)— 序列结束标记。
在使用特殊标记构建序列时,这不是用于序列结尾的标记。使用的标记是sep_token
。unk_token
(str
,可选,默认为""
)— 未知标记。词汇表中不存在的标记无法转换为 ID,并被设置为此标记。pad_token
(str
,可选,默认为""
)— 用于填充的标记,例如在批处理不同长度的序列时使用。additional_special_tokens
(List[str]
,可选)— 分词器使用的其他特殊标记。
构建一个“快速” Reformer 分词器(由 HuggingFace 的 tokenizers 库支持)。基于 Unigram。
此分词器继承自 PreTrainedTokenizerFast,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
ReformerModel
class transformers.ReformerModel
( config )
参数
config
(ReformerConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
裸的 Reformer 模型变压器输出原始隐藏状态,没有特定的头部。Reformer 是由 Nikita Kitaev、Łukasz Kaiser、Anselm Levskaya 在 Reformer: The Efficient Transformer 中提出的。
此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None num_hashes: Optional = None past_buckets_states: Optional = None use_cache: Optional = None output_hidden_states: Optional = None output_attentions: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.reformer.modeling_reformer.ReformerModelOutput or tuple(torch.FloatTensor)
参数
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。在训练期间,input_ids 的 sequence_length 必须是相关模型块长度(lsh 的、local 的或两者的)的倍数。在评估期间,这些索引会自动填充为块长度的倍数。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, 可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:
- 1 表示未被掩盖的标记,
- 0 表示被掩盖的标记。
- 什么是注意力掩码?
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, 可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
什么是位置 ID?head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, 可选) — 用于使自注意力模块中选择的头部失效的掩码。掩码值选择在[0, 1]
之间:
- 1 表示头部未被掩盖,
- 0 表示头部被掩盖。
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, 可选) — 可选地,您可以选择直接传递嵌入表示而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,这将很有用,而不是使用模型的内部嵌入查找矩阵。num_hashes
(int
, 可选) — 在分桶期间应执行的哈希轮数。设置此参数会覆盖config.num_hashes
中定义的默认值。
有关更多信息,请参阅 ReformerConfig 中的num_hashes
。past_buckets_states
(List[Tuple(torch.LongTensor, torch.FloatTensor)]
, 可选) — 长度为config.n_layers
的Tuple(torch.LongTensor, torch.FloatTensor)
列表,第一个元素是先前的桶的形状为(batch_size, num_heads, num_hashes, sequence_length)
,第二个元素是先前的隐藏状态的形状为(batch_size, sequence_length, hidden_size)
。
包含预先计算的隐藏状态和桶(仅与 LSH 自注意力相关)。可用于加速顺序解码。use_cache
(bool
, 可选) — 如果设置为True
,则返回past_key_values
键值状态,可用于加速解码(参见past_key_values
)。output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.reformer.modeling_reformer.ReformerModelOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.reformer.modeling_reformer.ReformerModelOutput
或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或 config.return_dict=False
)包含根据配置 (ReformerConfig) 和输入而异的各种元素。
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, num_predict, hidden_size)
) — 模型最后一层的隐藏状态序列。num_predict
对应于target_mapping.shape[1]
。如果target_mapping
为None
,则num_predict
对应于sequence_length
。past_buckets_states
(ListTuple(torch.LongTensor, torch.FloatTensor)
,可选,当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的Tuple(torch.LongTensor, torch.FloatTensor
列表,第一个元素是形状为(batch_size, num_heads, num_hashes, sequence_length)
的先前 桶,第二个元素是形状为(batch_size, sequence_length, hidden_size)
的先前 隐藏状态)。
包含预先计算的桶和隐藏状态,可用于加速顺序解码(参见past_buckets_states
输入)。hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出,一个用于每层的输出)。
模型在每一层输出的隐藏状态以及初始嵌入输出。attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
[ReformerModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个函数,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, ReformerModel >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("google/reformer-crime-and-punishment") >>> model = ReformerModel.from_pretrained("google/reformer-crime-and-punishment") >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt") >>> outputs = model(**inputs) >>> last_hidden_states = outputs.last_hidden_state
ReformerModelWithLMHead
class transformers.ReformerModelWithLMHead
( config )
参数
config
(ReformerConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
在顶部带有 语言建模
头的 Reformer 模型。Reformer 是由 Nikita Kitaev、Łukasz Kaiser、Anselm Levskaya 在 Reformer: The Efficient Transformer 中提出的。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型还是一个 PyTorch torch.nn.Module 子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None position_ids: Optional = None attention_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None num_hashes: Optional = None past_buckets_states: Optional = None use_cache: Optional = None output_hidden_states: Optional = None output_attentions: Optional = None return_dict: Optional = None labels: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.CausalLMOutput or tuple(torch.FloatTensor)
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。在训练期间,input_ids 的 sequence_length 必须是相关模型的块长度(lsh 的、local 的或两者的)的倍数。在评估期间,这些索引会自动填充为块长度的倍数。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(torch.FloatTensor
,形状为(batch_size, sequence_length)
,optional) — 避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:
- 对于未被屏蔽的标记为 1,
- 对于被屏蔽的标记为 0。
- 什么是注意力掩码?
position_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。
什么是位置 ID?head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值在[0, 1]
中选择:
- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 可选地,您可以选择直接传递嵌入表示而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。num_hashes
(int
, optional) — 在分桶过程中应执行的哈希轮数。设置此参数会覆盖config.num_hashes
中定义的默认值。
有关更多信息,请参阅 ReformerConfig 中的num_hashes
。past_buckets_states
(List[Tuple(torch.LongTensor, torch.FloatTensor)]
, optional) — 长度为config.n_layers
的Tuple(torch.LongTensor, torch.FloatTensor
列表,第一个元素是形状为(batch_size, num_heads, num_hashes, sequence_length)
的先前桶,第二个元素是形状为(batch_size, sequence_length, hidden_size)
的先前隐藏状态)。
包含预先计算的隐藏状态和桶(仅与 LSH 自注意力相关)。可用于加速顺序解码。use_cache
(bool
, optional) — 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。labels
(torch.LongTensor
of shape(batch_size,)
, optional) — 用于计算序列分类/回归损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]
范围内。所有设置为-100
的标签都会被忽略(掩码),损失仅计算标签在[0, ..., config.vocab_size]
范围内的。
返回
transformers.modeling_outputs.CausalLMOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.CausalLMOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
)包含根据配置(ReformerConfig)和输入的各种元素。
loss
(torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 语言建模损失(用于下一个标记的预测)。logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入的输出和每一层的输出)。
模型在每一层输出的隐藏状态以及可选的初始嵌入输出。attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
ReformerModelWithLMHead 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在此之后调用Module
实例,而不是在此之后调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> import torch >>> from transformers import AutoTokenizer, ReformerModelWithLMHead >>> tokenizer = AutoTokenizer.from_pretrained("google/reformer-crime-and-punishment") >>> model = ReformerModelWithLMHead.from_pretrained("google/reformer-crime-and-punishment") >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt") >>> outputs = model(**inputs, labels=inputs["input_ids"]) >>> loss = outputs.loss >>> logits = outputs.logits
ReformerForMaskedLM
class transformers.ReformerForMaskedLM
( config )
参数
config
(ReformerConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
Reformer 模型顶部带有语言建模
头。Reformer 是由 Nikita Kitaev、Łukasz Kaiser、Anselm Levskaya 在Reformer: The Efficient Transformer中提出的。
这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None position_ids: Optional = None attention_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None num_hashes: Optional = None labels: Optional = None output_hidden_states: Optional = None output_attentions: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MaskedLMOutput or tuple(torch.FloatTensor)
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。在训练期间,input_ids 的 sequence_length 必须是相关模型的块长度(lsh 的、local 的或两者的)的倍数。在评估期间,这些索引会自动填充为块长度的倍数。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。选择的掩码值为[0, 1]
:
- 对于未被“掩盖”的标记为 1,
- 对于被“掩盖”的标记为 0。
- 什么是注意力掩码?
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。
什么是位置 ID?head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块的选定头部失效的掩码。选择的掩码值为[0, 1]
:
- 1 表示头部未被“掩盖”,
- 0 表示头部被“掩盖”。
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望更多地控制如何将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。num_hashes
(int
,可选)— 在分桶期间应执行的哈希轮数。设置此参数会覆盖config.num_hashes
中定义的默认值。
有关更多信息,请参见 ReformerConfig 中的num_hashes
。past_buckets_states
(List[Tuple(torch.LongTensor, torch.FloatTensor)]
,可选)— 长度为config.n_layers
的Tuple(torch.LongTensor, torch.FloatTensor)
列表,第一个元素是形状为(batch_size, num_heads, num_hashes, sequence_length)
的先前桶,第二个元素是形状为(batch_size, sequence_length, hidden_size)
的先前隐藏状态)。
包含预先计算的隐藏状态和桶(仅与 LSH 自注意力相关)。可用于加速顺序解码。use_cache
(bool
,可选)— 如果设置为True
,将返回past_key_values
键值状态,并可用于加速解码(请参见past_key_values
)。output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的hidden_states
。return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。labels
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩码),损失仅计算具有标签的标记
返回
transformers.modeling_outputs.MaskedLMOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.MaskedLMOutput 或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或 config.return_dict=False
)包含根据配置(ReformerConfig)和输入的不同元素。
loss
(torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 掩码语言建模(MLM)损失。logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出的一个 + 每层的输出一个)。
模型每层输出的隐藏状态以及可选的初始嵌入输出。attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
在自注意力头中用于计算加权平均值的注意力权重。
ReformerForMaskedLM 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
此示例使用了一个虚假的检查点,因为我们没有任何可用的预训练模型,用于 Reformer 架构的掩码语言建模任务。
示例:
>>> import torch >>> from transformers import AutoTokenizer, ReformerForMaskedLM >>> tokenizer = AutoTokenizer.from_pretrained("hf-internal-testing/tiny-random-reformer") >>> model = ReformerForMaskedLM.from_pretrained("hf-internal-testing/tiny-random-reformer") >>> # add mask_token >>> tokenizer.add_special_tokens({"mask_token": "[MASK]"}) >>> inputs = tokenizer("The capital of France is [MASK].", return_tensors="pt") >>> # resize model's embedding matrix >>> model.resize_token_embeddings(new_num_tokens=model.config.vocab_size + 1) >>> 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) >>> predicted_token = tokenizer.decode(predicted_token_id)
>>> 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[:, : inputs["input_ids"].shape[-1]], -100 ... ) >>> outputs = model(**inputs, labels=labels) >>> loss = round(outputs.loss.item(), 2)
Transformers 4.37 中文文档(五十四)(4)https://developer.aliyun.com/article/1565376