Transformers 4.37 中文文档(二十七)(2)https://developer.aliyun.com/article/1563732
CodeLlamaTokenizer
class transformers.CodeLlamaTokenizer
( vocab_file unk_token = '<unk>' bos_token = '<s>' eos_token = '</s>' prefix_token = '▁<PRE>' middle_token = '▁<MID>' suffix_token = '▁<SUF>' eot_token = '▁<EOT>' fill_token = '<FILL_ME>' suffix_first = False sp_model_kwargs: Optional = None add_bos_token = True add_eos_token = False clean_up_tokenization_spaces = False additional_special_tokens = None use_default_system_prompt = False **kwargs )
参数
vocab_file
(str
)— 词汇表文件的路径。unk_token
(str
,可选,默认为""
)— 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。bos_token
(str
,可选,默认为"
")— 在预训练期间使用的序列开始标记。可用作序列分类器标记。eos_token
(str
,可选,默认为"
"
)— 序列结束标记。
在构建使用特殊标记的序列时,这不是用于表示序列结束的标记。使用的标记是sep_token
。prefix_token
(str
,可选,默认为"▁
"
)— 用于填充的前缀标记。middle_token
(str
,可选,默认为"▁"
)— 用于填充的中间标记。suffix_token
(str
,可选,默认为"▁"
)— 用于填充的后缀标记。eot_token
(str
,可选,默认为"▁"
)— 用于填充的文本结束标记。fill_token
(str
,可选,默认为""
)— 用于在前缀和后缀之间拆分输入的标记。suffix_first
(bool
,可选,默认为False
)— 输入提示和后缀是否应该首先格式化后缀。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 合并操作的丢弃概率。
add_bos_token
(bool
,可选,默认为True
)— 是否在序列开头添加一个序列开始标记。add_eos_token
(bool
,可选,默认为False
)— 是否在序列末尾添加一个序列结束标记。clean_up_tokenization_spaces
(bool
,可选,默认为False
)— 是否清除分词空格。additional_special_tokens
(List[str]
,可选)— 分词器使用的额外特殊标记。use_default_system_prompt
(bool
,可选,默认为False
)— 是否应使用 Llama 的默认系统提示。
构建一个 CodeLlama 分词器。基于字节级字节对编码。默认填充标记未设置,因为原始模型中没有填充标记。
默认配置与sentencepiece/CodeLlama-7b-Instruct-hf匹配,支持提示填充。
build_inputs_with_special_tokens
( token_ids_0 token_ids_1 = None )
get_special_tokens_mask
( 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。在使用分词器的prepare_for_model
方法添加特殊标记时调用此方法。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— ID 列表。token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
根据给定序列的标记类型 ID 列表。
从传递的两个序列创建一个用于序列对分类任务的掩码。一个 ALBERT
序列对掩码具有以下格式:
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_1
为None
,则仅返回掩码的第一部分(0s)。
save_vocabulary
( save_directory filename_prefix: Optional = None ) → export const metadata = 'undefined';Tuple(str)
参数
save_directory
(str
)— 保存词汇表的目录。
返回
Tuple(str)
保存的文件路径。
将词汇表和特殊标记文件保存到目录中。
CodeLlamaTokenizerFast
class transformers.CodeLlamaTokenizerFast
( vocab_file = None tokenizer_file = None clean_up_tokenization_spaces = False unk_token = '<unk>' bos_token = '<s>' eos_token = '</s>' prefix_token = '▁<PRE>' middle_token = '▁<MID>' suffix_token = '▁<SUF>' eot_token = '▁<EOT>' fill_token = '<FILL_ME>' additional_special_tokens = None add_bos_token = True add_eos_token = False use_default_system_prompt = False **kwargs )
参数
vocab_file
(str
,可选)— SentencePiece文件(通常具有.model
扩展名),其中包含实例化分词器所需的词汇表。tokenizer_file
(str
,可选)— tokenizers文件(通常具有.json
扩展名),其中包含加载分词器所需的所有内容。clean_up_tokenization_spaces
(str
,可选,默认为False
)— 解码后是否清除空格,清除包括删除额外的空格等潜在工件。unk_token
(str
,可选,默认为""
)— 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。bos_token
(str
,可选,默认为"
")— 在预训练期间使用的序列开始标记。可以用作序列分类器标记。eos_token
(str
, optional, defaults to"
"
) — 序列结束标记。prefix_token
(str
, optional, defaults to"▁
"
) — 用于填充的前缀标记。middle_token
(str
, optional, defaults to"▁"
) — 用于填充的中间标记。suffix_token
(str
, optional, defaults to"▁"
) — 用于填充的后缀标记。eot_token
(str
, optional, defaults to"▁"
) — 用于填充的文本结束标记。fill_token
(str
, optional, defaults to""
) — 用于在前缀和后缀之间分割输入的标记。additional_special_tokens
(List[str]
, optional) — 分词器使用的额外特殊标记。add_bos_token
(bool
, optional, defaults toTrue
) — 是否在序列开头添加一个起始标记。add_eos_token
(bool
, optional, defaults toFalse
) — 是否在序列末尾添加一个序列结束标记。use_default_system_prompt
(bool
, optional, defaults toFalse
) — 是否使用 Llama 的默认系统提示。
构建一个 Llama 分词器。基于字节级字节对编码。
这里特别使用了 ByteFallback 和无规范化。
>>> from transformers import CodeLlamaTokenizerFast >>> tokenizer = CodeLlamaTokenizerFast.from_pretrained("hf-internal-testing/llama-tokenizer") >>> tokenizer.encode("Hello this is a test") [1, 15043, 445, 338, 263, 1243]
如果要更改 bos_token
或 eos_token
,请确保在初始化模型时指定它们,或调用 tokenizer.update_post_processor()
确保后处理正确完成(否则编码序列的第一个标记和最后一个标记的值将不正确)。有关更多详细信息,请查看 [post-processors] (huggingface.co/docs/tokenizers/api/post-processors
) 文档。
这个分词器继承自 PreTrainedTokenizerFast,其中包含大部分主要方法。用户应参考这个超类以获取有关这些方法的更多信息。默认配置与 codellama/CodeLlama-7b-Instruct-hf 匹配,支持提示填充。
build_inputs_with_special_tokens
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
) — 将添加特殊标记的 ID 列表。token_ids_1
(List[int]
, optional) — 第二个序列的可选 ID 列表。
返回
List[int]
带有适当特殊标记的 输入 ID 列表。
通过连接和添加特殊标记,为序列分类任务构建模型输入的序列或序列对。特殊标记取决于调用 set_lang。
NLLB 序列具有以下格式,其中 X
表示序列:
input_ids
(用于编码器)X [eos, src_lang_code]
decoder_input_ids
: (用于解码器)X [eos, tgt_lang_code]
BOS 从不使用。序列对不是预期的用例,但它们将在没有分隔符的情况下处理。
get_special_tokens_mask
( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';A list of integers in the range [0, 1]
参数
token_ids_0
(List[int]
) — 第一个序列的 ID 列表。token_ids_1
(List[int]
, optional) — 第二个序列的 ID 列表。already_has_special_tokens
(bool
, optional, defaults toFalse
) — 标记列表是否已经使用模型的特殊标记格式化。
返回
一个在范围[0, 1]内的整数列表
1 表示特殊标记,0 表示序列标记。
从没有添加特殊标记的标记列表中检索序列 ID。当使用分词器的 prepare_for_model
或 encode_plus
方法添加特殊标记时,将调用此方法。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
) — 第一个标记化序列。token_ids_1
(List[int]
, optional) — 第二个标记化序列。
返回
List[int]
标记类型 ID。
创建与传递的序列相对应的标记类型 ID。什么是标记类型 ID?
如果模型有一种特殊的构建方式,则应该在子类中重写这个方法。
update_post_processor
( )
使用当前的bos_token
和eos_token
更新底层后处理器。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
ConvBERT
原文:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/convbert
概述
ConvBERT 模型由 Zihang Jiang、Weihao Yu、Daquan Zhou、Yunpeng Chen、Jiashi Feng、Shuicheng Yan 在ConvBERT: Improving BERT with Span-based Dynamic Convolution中提出。
该论文的摘要如下:
最近,像 BERT 及其变种这样的预训练语言模型在各种自然语言理解任务中取得了令人印象深刻的性能。然而,BERT 严重依赖全局自注意力块,因此存在较大的内存占用和计算成本。尽管所有的注意力头都在整个输入序列上查询,以从全局视角生成注意力图,但我们观察到一些头部只需要学习局部依赖关系,这意味着存在计算冗余。因此,我们提出了一种新颖的基于跨度的动态卷积,以替换这些自注意力头,直接建模局部依赖关系。这种新颖的卷积头,与其余的自注意力头一起,形成了一个新的混合注意力块,更有效地学习全局和局部上下文。我们将 BERT 配备了这种混合注意力设计,并构建了一个 ConvBERT 模型。实验证明,ConvBERT 在各种下游任务中明显优于 BERT 及其变种,训练成本更低,模型参数更少。值得注意的是,ConvBERTbase 模型的 GLUE 得分为 86.4,比 ELECTRAbase 高 0.7,同时使用不到 1/4 的训练成本。代码和预训练模型将会发布。
此模型由abhishek贡献。原始实现可在此处找到:github.com/yitu-opensource/ConvBert
使用提示
ConvBERT 训练提示与 BERT 类似。有关使用提示,请参阅 BERT 文档。
资源
- 文本分类任务指南
- 标记分类任务指南
- 问答任务指南
- 掩码语言建模任务指南
- 多项选择任务指南
ConvBertConfig
class transformers.ConvBertConfig
( 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 = 1 bos_token_id = 0 eos_token_id = 2 embedding_size = 768 head_ratio = 2 conv_kernel_size = 9 num_groups = 1 classifier_dropout = None **kwargs )
参数
vocab_size
(int
,可选,默认为 30522)— ConvBERT 模型的词汇大小。定义了在调用 ConvBertModel 或 TFConvBertModel 时可以表示的不同标记数量。hidden_size
(int
,可选,默认为 768)— 编码器层和池化器层的维度。num_hidden_layers
(int
,可选,默认为 12)— Transformer 编码器中的隐藏层数量。num_attention_heads
(int
,可选,默认为 12)— Transformer 编码器中每个注意力层的注意力头数量。intermediate_size
(int
,可选,默认为 3072)— Transformer 编码器中“中间”(即前馈)层的维度。hidden_act
(str
或function
,可选,默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。hidden_dropout_prob
(float
,可选,默认为 0.1)— 嵌入、编码器和池化器中所有全连接层的丢失概率。attention_probs_dropout_prob
(float
,可选,默认为 0.1)— 注意力概率的丢失比率。max_position_embeddings
(int
,可选,默认为 512)— 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如 512、1024 或 2048)。type_vocab_size
(int
,可选,默认为 2)— 在调用 ConvBertModel 或 TFConvBertModel 时传递的token_type_ids
的词汇表大小。initializer_range
(float
,可选,默认为 0.02)— 用于初始化所有权重矩阵的截断正态初始化器的标准差。layer_norm_eps
(float
,可选,默认为 1e-12)— 层归一化层使用的 epsilon。head_ratio
(int
,可选,默认为 2)— 用于减少注意力头数的比例 gamma。num_groups
(int
,可选,默认为 1)— ConvBert 模型的分组线性层的组数conv_kernel_size
(int
,可选,默认为 9)— 卷积核的大小。classifier_dropout
(float
,可选)— 分类头的丢失比率。
这是用于存储 ConvBertModel 配置的配置类。它用于根据指定的参数实例化 ConvBERT 模型,定义模型架构。使用默认值实例化配置将产生类似于 ConvBERT YituTech/conv-bert-base架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读来自 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import ConvBertConfig, ConvBertModel >>> # Initializing a ConvBERT convbert-base-uncased style configuration >>> configuration = ConvBertConfig() >>> # Initializing a model (with random weights) from the convbert-base-uncased style configuration >>> model = ConvBertModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
ConvBertTokenizer
class transformers.ConvBertTokenizer
( 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 )
参数
vocab_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
的值确定(与原始 ConvBERT 相同)。
构建一个 ConvBERT 分词器。基于 WordPiece。
此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
) — 要添加特殊标记的 ID 列表。token_ids_1
(List[int]
, 可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
具有适当特殊标记的输入 ID 列表。
通过连接和添加特殊标记从序列或序列对构建用于序列分类任务的模型输入。ConvBERT 序列具有以下格式:
- 单个序列:
[CLS] X [SEP]
- 序列对:
[CLS] A [SEP] B [SEP]
get_special_tokens_mask
( 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。在使用分词器的prepare_for_model
方法添加特殊标记时调用此方法。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
) — ID 列表。token_ids_1
(List[int]
, 可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
根据给定序列的标记类型 ID 列表。
从传递的两个序列创建用于序列对分类任务的掩码。ConvBERT 序列
序列掩码的格式如下:
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_1
为None
,则此方法仅返回掩码的第一部分(0)。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
ConvBertTokenizerFast
class transformers.ConvBertTokenizerFast
( 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 )
参数
vocab_file
(str
) — 包含词汇表的文件。do_lower_case
(bool
, 可选, 默认为True
) — 在标记化时是否将输入转换为小写。unk_token
(str
, 可选, 默认为"[UNK]"
) — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。sep_token
(str
,可选,默认为"[SEP]"
)— 分隔符标记,用于从多个序列构建序列,例如用于序列分类的两个序列或用于文本和问题的问题回答。它还用作使用特殊标记构建的序列的最后一个标记。pad_token
(str
,可选,默认为"[PAD]"
)— 用于填充的标记,例如在批处理不同长度的序列时使用。cls_token
(str
,可选,默认为"[CLS]"
)— 在进行序列分类(对整个序列而不是每个标记进行分类)时使用的分类器标记。当使用特殊标记构建序列时,它是序列的第一个标记。mask_token
(str
,可选,默认为"[MASK]"
)— 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。clean_text
(bool
,可选,默认为True
)— 是否在标记化之前清理文本,通过删除所有控制字符并将所有空格替换为经典空格。tokenize_chinese_chars
(bool
,可选,默认为True
)— 是否对中文字符进行标记化。这可能应该在日语中停用(参见此问题)。strip_accents
(bool
,可选)— 是否去除所有重音符号。如果未指定此选项,则将由lowercase
的值确定(与原始 ConvBERT 中的情况相同)。wordpieces_prefix
(str
,可选,默认为"##"
)— 用于子词的前缀。
根据给定序列构造“快速”ConvBERT 分词器(由 HuggingFace 的tokenizers库支持)。基于 WordPiece。
此分词器继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
( token_ids_0 token_ids_1 = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— 要添加特殊标记的 ID 列表。token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
具有适当特殊标记的 input IDs 列表。
通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。ConvBERT 序列的格式如下:
- 单个序列:
[CLS] X [SEP]
- 序列对:
[CLS] A [SEP] B [SEP]
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— ID 列表。token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
根据给定序列的 token type IDs 列表。
从传递的两个序列创建一个用于序列对分类任务的掩码。一个 ConvBERT 序列
序列对掩码的格式如下:
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_1
是None
,则此方法仅返回掩码的第一部分(0s)。
PytorchHide Pytorch 内容
ConvBertModel
class transformers.ConvBertModel
( config )
参数
config
(ConvBertConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
裸的 ConvBERT 模型变压器输出原始隐藏状态,没有特定的头部。这个模型是 PyTorch torch.nn.Module 的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithCrossAttentions or tuple(torch.FloatTensor)
参数
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, 可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:
返回
transformers.modeling_outputs.BaseModelOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithCrossAttentions 或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或 config.return_dict=False
)包含各种元素,取决于配置(ConvBertConfig)和输入。
last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。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 之后的注意力权重,用于计算自注意力头中的加权平均值。cross_attentions
(tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
和config.add_cross_attention=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
ConvBertModel 的前向方法覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, ConvBertModel >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("YituTech/conv-bert-base") >>> model = ConvBertModel.from_pretrained("YituTech/conv-bert-base") >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt") >>> outputs = model(**inputs) >>> last_hidden_states = outputs.last_hidden_state
ConvBertForMaskedLM
class transformers.ConvBertForMaskedLM
( config )
参数
config
(ConvBertConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
ConvBERT 模型在顶部有一个语言建模
头。此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有信息。
forward
( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MaskedLMOutput or tuple(torch.FloatTensor)
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。
可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
什么是输入 ID?attention_mask
(torch.FloatTensor
,形状为(batch_size, sequence_length)
,optional) — 避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]
中:
返回
transformers.modeling_outputs.MaskedLMOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.MaskedLMOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(ConvBertConfig)和输入的各种元素。
loss
(torch.FloatTensor
,形状为(1,)
,optional, 当提供labels
时返回) — 掩码语言建模(MLM)损失。logits
(torch.FloatTensor
,形状为(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 之后,用于计算自注意力头中的加权平均值。
ConvBertForMaskedLM 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoTokenizer, ConvBertForMaskedLM >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("YituTech/conv-bert-base") >>> model = ConvBertForMaskedLM.from_pretrained("YituTech/conv-bert-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) >>> 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)
Transformers 4.37 中文文档(二十七)(4)https://developer.aliyun.com/article/1563744