Transformers 4.37 中文文档(五十七)(1)

简介: Transformers 4.37 中文文档(五十七)


原文:huggingface.co/docs/transformers

RoCBert

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/roc_bert

概述

RoCBert 模型是由 HuiSu、WeiweiShi、XiaoyuShen、XiaoZhou、TuoJi、JiaruiFang、JieZhou 在 RoCBert: Robust Chinese Bert with Multimodal Contrastive Pretraining 中提出的。它是一个经过预训练的中文语言模型,在各种形式的对抗攻击下具有鲁棒性。

论文摘要如下:

大规模预训练语言模型在自然语言处理任务上取得了最先进的结果。然而,它们被证明对付形象文字语言(如中文)的对抗攻击特别脆弱。在这项工作中,我们提出了  ROCBERT:一个经过预训练的中文  Bert,对各种形式的对抗攻击(如单词扰动、同义词、错别字等)具有鲁棒性。它是通过对比学习目标进行预训练的,该目标在不同的合成对抗示例下最大化标签一致性。该模型接受包括语义、音素和视觉特征在内的多模态信息作为输入。我们展示了所有这些特征对模型的鲁棒性都很重要,因为攻击可以以这三种形式进行。在  5 个中文自然语言理解任务中,ROCBERT  在三种黑盒对抗算法下优于强基线,而不会牺牲对干净测试集的性能。在人为攻击下,它在有毒内容检测任务中表现最佳。

该模型由 weiweishi 贡献。

资源

  • 文本分类任务指南
  • 标记分类任务指南
  • 问答任务指南
  • 因果语言建模任务指南
  • 掩码语言建模任务指南
  • 多项选择任务指南

RoCBertConfig

class transformers.RoCBertConfig

<来源>

( 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 use_cache = True pad_token_id = 0 position_embedding_type = 'absolute' classifier_dropout = None enable_pronunciation = True enable_shape = True pronunciation_embed_dim = 768 pronunciation_vocab_size = 910 shape_embed_dim = 512 shape_vocab_size = 24858 concat_input = True **kwargs )

参数

  • vocab_size (int, optional, defaults to 30522) — RoCBert 模型的词汇量大小。定义了在调用 RoCBertModel 时可以表示的不同标记的数量。
  • 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""selu""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) — 在调用 RoCBertModel 时传递的 token_type_ids 的词汇量大小。
  • initializer_range (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, optional, defaults to 1e-12) — 层归一化层使用的 epsilon。
  • is_decoder (bool, optional, defaults to False) — 模型是否用作解码器。如果为 False,则模型用作编码器。
  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅在 config.is_decoder=True 时相关。
  • position_embedding_type (str, optional, defaults to "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
  • classifier_dropout (float, optional) — 分类头的丢弃比率。
  • enable_pronunciation (bool, optional, defaults to True) — 模型在训练时是否使用发音嵌入。
  • enable_shape (bool, optional, defaults to True) — 模型在训练时是否使用形状嵌入。
  • pronunciation_embed_dim (int, optional, defaults to 768) — 发音嵌入的维度。
  • pronunciation_vocab_size (int, optional, defaults to 910) — RoCBert 模型的发音词汇表大小。定义了在调用 RoCBertModel 时传递的 input_pronunciation_ids 可表示的不同标记数量。
  • shape_embed_dim (int, optional, defaults to 512) — 形状嵌入的维度。
  • shape_vocab_size (int, optional, defaults to 24858) — RoCBert 模型的形状词汇表大小。定义了在调用 RoCBertModel 时传递的 input_shape_ids 可表示的不同标记数量。
  • concat_input (bool, optional, defaults to True)  — 定义了合并 shape_embed、pronunciation_embed 和 word_embed 的方式,如果值为 true,则  output_embed = torch.cat((word_embed, shape_embed, pronunciation_embed),  -1),否则 output_embed = (word_embed + shape_embed + pronunciation_embed) /  3 示例 —

这是用于存储 RoCBertModel 配置的配置类。根据指定的参数实例化 RoCBert 模型,定义模型架构。使用默认值实例化配置将产生类似于 RoCBert weiweishi/roc-bert-base-zh 架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 中的文档以获取更多信息。

>>> from transformers import RoCBertModel, RoCBertConfig
>>> # Initializing a RoCBert weiweishi/roc-bert-base-zh style configuration
>>> configuration = RoCBertConfig()
>>> # Initializing a model from the weiweishi/roc-bert-base-zh style configuration
>>> model = RoCBertModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

RoCBertTokenizer

class transformers.RoCBertTokenizer

< source >

( vocab_file word_shape_file word_pronunciation_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 )

参数

  • Construct 一个 RoCBert 分词器。基于 WordPiece。此分词器继承自 PreTrainedTokenizer,其中 —
  • 包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。 — vocab_file (str): 包含词汇的文件。word_shape_file (str): 包含单词=>形状信息的文件。word_pronunciation_file (str): 包含单词=>发音信息的文件。do_lower_case (bool, 可选, 默认为 True): 在标记化时是否将输入转换为小写。do_basic_tokenize (bool, 可选, 默认为 True): 在 WordPiece 之前是否进行基本标记化。never_split (Iterable, 可选): 在标记化过程中永远不会拆分的标记集合。仅在do_basic_tokenize=True时有效 unk_token (str, 可选, 默认为 "[UNK]"): 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。 sep_token (str, 可选, 默认为 "[SEP]"): 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于问题回答的文本和问题。它还用作使用特殊标记构建的序列的最后一个标记。 pad_token (str, 可选, 默认为 "[PAD]"): 用于填充的标记,例如在批处理不同长度的序列时。 cls_token (str, 可选, 默认为 "[CLS]"): 分类器标记,用于进行序列分类(对整个序列进行分类而不是每个标记的分类)。在使用特殊标记构建时,它是序列的第一个标记。 mask_token (str, 可选, 默认为 "[MASK]"): 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。 tokenize_chinese_chars (bool, 可选, 默认为 True): 是否标记化中文字符。这可能应该在日语中停用(参见此问题)。 strip_accents (bool, 可选): 是否去除所有重音符号。如果未指定此选项,则将由lowercase的值确定(与原始 BERT 中一样)。
build_inputs_with_special_tokens

< source >

( token_ids_0: List token_ids_1: Optional = None cls_token_id: int = None sep_token_id: int = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (List[int], 可选) — 序列对的可选第二个 ID 列表。

返回

List[int]

带有适当特殊标记的 input IDs 列表。

通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。BERT 序列的格式如下:

  • 单个序列:[CLS] X [SEP]
  • 序列对:[CLS] A [SEP] B [SEP]
get_special_tokens_mask

< source >

( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], 可选) — 序列对的可选第二个 ID 列表。
  • already_has_special_tokens (bool, 可选, 默认为 False) — 标记列表是否已经格式化为模型的特殊标记。

返回

List[int]

一个范围在[0, 1]内的整数列表:1 表示特殊标记,0 表示序列标记。

从没有添加特殊标记的标记列表中检索序列 ID。在使用 tokenizer 的prepare_for_model方法添加特殊标记时调用此方法。

create_token_type_ids_from_sequences

< source >

( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1List[int]可选)— 序列对的可选第二个 ID 列表。

返回

List[int]

根据给定序列的令牌类型 ID 列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。一个 BERT 序列

对的掩码具有以下格式:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

如果token_ids_1None,这个方法只返回掩码的第一部分(0s)。

save_vocabulary

<来源>

( save_directory: str filename_prefix: Optional = None )

RoCBertModel

class transformers.RoCBertModel

<来源>

( config add_pooling_layer = True )

参数

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

裸 RoCBert 模型,输出没有特定头部的原始隐藏状态。这个模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。

该模型可以表现为编码器(仅具有自注意力)以及解码器,在这种情况下,在自注意力层之间添加了一层交叉注意力,遵循Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser 和 Illia Polosukhin描述的架构。

为了表现为解码器,模型需要使用配置中设置为Trueis_decoder参数进行初始化。要在 Seq2Seq 模型中使用,模型需要使用is_decoder参数和add_cross_attention都设置为True进行初始化;然后期望一个encoder_hidden_states作为前向传递的输入。

forward

<来源>

( input_ids: Optional = None input_shape_ids: Optional = None input_pronunciation_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)— 词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • input_shape_ids(形状为(batch_size, sequence_length)torch.LongTensor)— 形状词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • input_pronunciation_ids(形状为(batch_size, sequence_length)torch.LongTensor)— 发音词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)—避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]中:
  • 1 表示未被“掩盖”的标记,
  • 0 表示被“掩盖”的标记。
  • 什么是注意力掩码?
  • token_type_ids(形状为(batch_size, sequence_length)torch.LongTensor可选)—段标记索引,指示输入的第一部分和第二部分。索引在[0, 1]中选择:
  • 0 对应于句子 A标记,
  • 1 对应于句子 B标记。
  • 什么是令牌类型 ID?
  • 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索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。
  • output_attentionsbool可选)—是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
  • output_hidden_statesbool可选)—是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
  • return_dictbool可选)—是否返回 ModelOutput 而不是普通元组。
  • encoder_hidden_states(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)—编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)—避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。选择的掩码值在[0, 1]中:
  • 1 表示未被“掩盖”的标记,
  • 0 表示被“掩盖”的标记。
  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组有 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_cachebool可选)—如果设置为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时),包括根据配置(RoCBertConfig)和输入而不同的各种元素。

  • last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor)- 模型最后一层的隐藏状态序列输出。
  • pooler_output(形状为(batch_size, hidden_size)torch.FloatTensor)- 经过用于辅助预训练任务的层进一步处理后,序列第一个标记(分类标记)的最后一层隐藏状态。例如,对于 BERT 系列模型,这返回经过线性层和 tanh 激活函数处理后的分类标记。线性层权重是在预训练期间从下一个句子预测(分类)目标中训练的。
  • hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=True或者当config.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出和每一层的输出)。
    模型在每一层输出的隐藏状态以及可选的初始嵌入输出。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=True或者当config.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    自注意力头中用于计算加权平均值的注意力 softmax 之后的注意力权重。
  • cross_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.add_cross_attention=True或者当config.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
  • past_key_valuestuple(tuple(torch.FloatTensor))可选,当传递use_cache=True或者当config.use_cache=True时返回)- 长度为config.n_layerstuple(torch.FloatTensor)元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)的张量,如果config.is_encoder_decoder=True还有 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)的张量。
    包含预先计算的隐藏状态(自注意力块中的键和值,以及在交叉注意力块中,如果config.is_encoder_decoder=True)可用(参见past_key_values输入)以加速顺序解码。

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

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

示例:

>>> from transformers import AutoTokenizer, RoCBertModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("weiweishi/roc-bert-base-zh")
>>> model = RoCBertModel.from_pretrained("weiweishi/roc-bert-base-zh")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

RoCBertForPreTraining

class transformers.RoCBertForPreTraining

<来源>

( config )

参数

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

RoCBert 模型在预训练期间使用对比损失和掩码语言模型损失。

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

forward

<来源>

( input_ids: Optional = None input_shape_ids: Optional = None input_pronunciation_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None attack_input_ids: Optional = None attack_input_shape_ids: Optional = None attack_input_pronunciation_ids: Optional = None attack_attention_mask: Optional = None attack_token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels_input_ids: Optional = None labels_input_shape_ids: Optional = None labels_input_pronunciation_ids: Optional = None labels_attention_mask: Optional = None labels_token_type_ids: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None **kwargs ) → export const metadata = 'undefined';transformers.modeling_outputs.MaskedLMOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()获取详细信息。
    什么是输入 ID?
  • input_shape_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 形状词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()获取详细信息。
    什么是输入 ID?
  • input_pronunciation_ids(形状为(batch_size, sequence_length)torch.LongTensor)- 发音词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()获取详细信息。
    什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)- 用于避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]中:
  • 1 表示未被掩码的标记,
  • 0 表示被掩码的标记。
  • 什么是注意力掩码?
  • token_type_ids(形状为(batch_size, sequence_length)torch.LongTensor可选)- 指示输入的第一部分和第二部分的段标记索引。选择的索引在[0, 1]中:
  • 0 对应于句子 A标记。
  • 1 对应于句子 B标记。
  • 什么是标记类型 ID?
  • 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 表示头部为not masked
  • 0 表示头部为masked
  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您希望更多地控制如何将input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
  • return_dictbool可选)— 是否返回 ModelOutput 而不是普通元组。
    attack_input_ids(形状为(batch_size, sequence_length)torch.LongTensor可选):用于计算对比损失的攻击样本 id。索引应在[-100, 0, ..., config.vocab_size]内(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算标签为[0, ..., config.vocab_size]的标记。attack_input_shape_ids(形状为(batch_size, sequence_length)torch.LongTensor可选):用于计算对比损失的攻击样本形状 id。索引应在[-100, 0, ..., config.vocab_size]内(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算标签为[0, ..., config.vocab_size]的标记。attack_input_pronunciation_ids(形状为(batch_size, sequence_length)torch.LongTensor可选):用于计算对比损失的攻击样本发音 id。索引应在[-100, 0, ..., config.vocab_size]内(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算标签为[0, ..., config.vocab_size]的标记。labels_input_ids(形状为(batch_size, sequence_length)torch.LongTensor可选):用于计算对比损失和 masked_lm_loss 的目标 id。索引应在[-100, 0, ..., config.vocab_size]内(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算标签为[0, ..., config.vocab_size]的标记。labels_input_shape_ids(形状为(batch_size, sequence_length)torch.LongTensor可选):用于计算对比损失和 masked_lm_loss 的目标形状 id。索引应在[-100, 0, ..., config.vocab_size]内(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算标签为[0, ..., config.vocab_size]的标记。labels_input_pronunciation_ids(形状为(batch_size, sequence_length)torch.LongTensor可选):用于计算对比损失和 masked_lm_loss 的目标发音 id。索引应在[-100, 0, ..., config.vocab_size]内(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算标签为[0, ..., config.vocab_size]的标记。
    kwargs(Dict[str, any],可选,默认为*{}*):用于隐藏已弃用的旧参数。

返回

transformers.modeling_outputs.MaskedLMOutput 或tuple(torch.FloatTensor)

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

  • loss (torch.FloatTensor,形状为(1,)可选,当提供labels时返回) — 掩码语言建模(MLM)损失。
  • logits(形状为(batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。
  • 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 之后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

>>> from transformers import AutoTokenizer, RoCBertForPreTraining
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("weiweishi/roc-bert-base-zh")
>>> model = RoCBertForPreTraining.from_pretrained("weiweishi/roc-bert-base-zh")
>>> inputs = tokenizer("你好,很高兴认识你", return_tensors="pt")
>>> attack_inputs = {}
>>> for key in list(inputs.keys()):
...     attack_inputs[f"attack_{key}"] = inputs[key]
>>> label_inputs = {}
>>> for key in list(inputs.keys()):
...     label_inputs[f"labels_{key}"] = inputs[key]
>>> inputs.update(label_inputs)
>>> inputs.update(attack_inputs)
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> logits.shape
torch.Size([1, 11, 21128])


Transformers 4.37 中文文档(五十七)(2)https://developer.aliyun.com/article/1565329

相关文章
|
3月前
|
PyTorch 算法框架/工具 计算机视觉
Transformers 4.37 中文文档(六十四)(4)
Transformers 4.37 中文文档(六十四)
20 1
|
3月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(五十七)(7)
Transformers 4.37 中文文档(五十七)
17 0
|
3月前
|
存储 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十七)(3)
Transformers 4.37 中文文档(五十七)
16 0
|
3月前
|
PyTorch 算法框架/工具 异构计算
Transformers 4.37 中文文档(五十七)(8)
Transformers 4.37 中文文档(五十七)
16 0
|
3月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(五十七)(6)
Transformers 4.37 中文文档(五十七)
21 0
|
3月前
|
缓存 PyTorch 算法框架/工具
Transformers 4.37 中文文档(五十七)(2)
Transformers 4.37 中文文档(五十七)
15 0
|
3月前
|
自然语言处理 PyTorch TensorFlow
Transformers 4.37 中文文档(五十七)(5)
Transformers 4.37 中文文档(五十七)
18 0
|
3月前
|
缓存 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十七)(4)
Transformers 4.37 中文文档(五十七)
20 0
|
3月前
|
机器学习/深度学习 存储 PyTorch
Transformers 4.37 中文文档(六十二)(1)
Transformers 4.37 中文文档(六十二)
15 0
|
3月前
|
缓存 自然语言处理 PyTorch
Transformers 4.37 中文文档(六十二)(5)
Transformers 4.37 中文文档(六十二)
15 0