Transformers 文件

CamemBERT

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

CamemBERT

PyTorch TensorFlow SDPA

概述

CamemBERT 模型由 Louis MartinBenjamin MullerPedro Javier Ortiz Suárez、Yoann Dupont、Laurent Romary、Éric Villemonte de la Clergerie、Djamé SeddahBenoît Sagot 在論文 CamemBERT: a Tasty French Language Model 中提出。它基於 Facebook 於 2019 年釋出的 RoBERTa 模型。這是一個在 138GB 法語文字上訓練的模型。

論文摘要如下:

預訓練語言模型目前在自然語言處理中無處不在。儘管它們取得了成功,但大多數可用模型要麼是在英語資料上訓練的,要麼是在多種語言資料的拼接上訓練的。這使得這些模型在除英語之外的所有語言中的實際應用非常有限。為了解決法語的這個問題,我們釋出了 CamemBERT,這是一個法語版本的雙向 Transformer 編碼器(BERT)。我們在多個下游任務中衡量了 CamemBERT 相對於多語言模型的效能,這些任務包括詞性標註、依存句法分析、命名實體識別和自然語言推理。CamemBERT 在大多數考慮的任務中都提升了現有技術水平。我們釋出 CamemBERT 的預訓練模型,希望能夠促進法語自然語言處理的研究和下游應用。

此模型由 ALMAnaCH 團隊 (Inria) 貢獻。原始程式碼可以在 這裡 找到。

此實現與 RoBERTa 相同。有關用法示例以及輸入和輸出的相關資訊,請參閱 RoBERTa 文件

資源

CamembertConfig

class transformers.CamembertConfig

< >

( 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 position_embedding_type = 'absolute' use_cache = True classifier_dropout = None **kwargs )

引數

  • vocab_size (int, 可選, 預設為 30522) — BERT 模型的詞彙表大小。定義了在呼叫 CamembertModelTFCamembertModel 時,可以透過 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 (strCallable, 可選, 預設為 "gelu") — 編碼器和池化層中的非線性啟用函式(函式或字串)。如果是字串,支援 "gelu""relu""silu""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) — token_type_ids 的詞彙表大小,在呼叫 CamembertModelTFCamembertModel 時傳入。
  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態分佈初始化器的標準差。
  • 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.) 中的 Method 4
  • is_decoder (bool, 可選, 預設為 False) — 模型是否用作解碼器。如果為 False,則模型用作編碼器。
  • use_cache (bool, 可選, 預設為 True) — 模型是否應返回最後的鍵/值注意力(並非所有模型都使用)。僅在 config.is_decoder=True 時相關。
  • classifier_dropout (float, 可選) — 分類頭的丟棄率。

這是一個配置類,用於儲存 CamembertModelTFCamembertModel 的配置。它用於根據指定的引數例項化 Camembert 模型,定義模型架構。使用預設值例項化配置將產生與 Camembert almanach/camembert-base 架構類似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。

示例

>>> from transformers import CamembertConfig, CamembertModel

>>> # Initializing a Camembert almanach/camembert-base style configuration
>>> configuration = CamembertConfig()

>>> # Initializing a model (with random weights) from the almanach/camembert-base style configuration
>>> model = CamembertModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

CamembertTokenizer

class transformers.CamembertTokenizer

< >

( vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' additional_special_tokens = ['<s>NOTUSED', '</s>NOTUSED', '<unk>NOTUSED'] sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None **kwargs )

引數

  • vocab_file (str) — SentencePiece 檔案(通常副檔名為 .spm),其中包含例項化分詞器所需的詞彙表。
  • 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>") — 用於掩蓋值的標記。這是使用掩碼語言建模訓練此模型時使用的標記。這是模型將嘗試預測的標記。
  • additional_special_tokens (list[str], 可選, 預設為 ['<s>NOTUSED', '</s>NOTUSED', '<unk>NOTUSED']) — 分詞器使用的附加特殊標記。
  • 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 的合併操作的丟棄機率。

  • sp_model (SentencePieceProcessor) — 用於每次轉換(字串、標記和 ID)的 SentencePiece 處理器。

改編自 RobertaTokenizerXLNetTokenizer。構建一個 CamemBERT 分詞器。基於 SentencePiece

該分詞器繼承自 PreTrainedTokenizer,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。

build_inputs_with_special_tokens

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

引數

  • token_ids_0 (list[int]) — 將新增特殊標記的 ID 列表。
  • token_ids_1 (list[int], 可選) — 可選的用於序列對的第二個 ID 列表。

返回

list[int]

帶有適當特殊標記的輸入ID列表。

透過連線和新增特殊標記,從一個序列或一對序列為序列分類任務構建模型輸入。一個 CamemBERT 序列具有以下格式

  • 單個序列:<s> X </s>
  • 序列對:<s> A </s></s> B </s>

get_special_tokens_mask

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) 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: typing.Optional[list[int]] = None ) list[int]

引數

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可選) — 可選的用於序列對的第二個 ID 列表。

返回

list[int]

零列表。

從傳入的兩個序列中建立一個掩碼,用於序列對分類任務。CamemBERT 和 RoBERTa 一樣,不使用標記型別 ID,因此返回一個全零列表。

save_vocabulary

< >

( save_directory: str filename_prefix: typing.Optional[str] = None )

CamembertTokenizerFast

class transformers.CamembertTokenizerFast

< >

( vocab_file = None tokenizer_file = None bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' additional_special_tokens = ['<s>NOTUSED', '</s>NOTUSED', '<unk>NOTUSED'] **kwargs )

引數

  • vocab_file (str) — SentencePiece 檔案(通常副檔名為 .spm),其中包含例項化分詞器所需的詞彙表。
  • 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>") — 用於掩蓋值的標記。這是使用掩碼語言建模訓練此模型時使用的標記。這是模型將嘗試預測的標記。
  • additional_special_tokens (list[str], 可選, 預設為 ["<s>NOTUSED", "</s>NOTUSED"]) — 分詞器使用的附加特殊標記。

構建一個“快速”的 CamemBERT 分詞器(由 HuggingFace 的 tokenizers 庫支援)。改編自 RobertaTokenizerXLNetTokenizer。基於 BPE

該分詞器繼承自 PreTrainedTokenizerFast,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。

build_inputs_with_special_tokens

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

引數

  • token_ids_0 (list[int]) — 將新增特殊標記的 ID 列表。
  • token_ids_1 (list[int], 可選) — 可選的用於序列對的第二個 ID 列表。

返回

list[int]

帶有適當特殊標記的輸入ID列表。

透過連線和新增特殊標記,從一個序列或一對序列為序列分類任務構建模型輸入。一個 CamemBERT 序列具有以下格式

  • 單個序列:<s> X </s>
  • 序列對:<s> A </s></s> B </s>

create_token_type_ids_from_sequences

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

引數

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可選) — 可選的用於序列對的第二個 ID 列表。

返回

list[int]

零列表。

從傳入的兩個序列中建立一個掩碼,用於序列對分類任務。CamemBERT 和 RoBERTa 一樣,不使用標記型別 ID,因此返回一個全零列表。

Pytorch
隱藏 Pytorch 內容

CamembertModel

class transformers.CamembertModel

< >

( config add_pooling_layer = True )

引數

  • config (CamembertModel) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法以載入模型權重。
  • add_pooling_layer (bool, 可選, 預設為 True) — 是否新增池化層。

基礎的 Camembert 模型,輸出原始的隱藏狀態,頂部沒有任何特定的頭部。

此模型繼承自 PreTrainedModel。請查閱超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( 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[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 or tuple(torch.FloatTensor)

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示標記未被掩蓋
    • 0 表示標記被掩蓋

    什麼是注意力掩碼?

  • token_type_ids (torch.Tensor,形狀為 (batch_size, sequence_length)可選) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引在 [0, 1] 中選擇:

    • 0 對應於 句子 A 的標記,
    • 1 對應於 句子 B 的標記。

    什麼是標記型別 ID?

  • position_ids (torch.Tensor,形狀為 (batch_size, sequence_length)可選) — 每個輸入序列標記在位置嵌入中的位置索引。在 [0, config.n_positions - 1] 範圍內選擇。

    什麼是位置 ID?

  • head_mask (torch.Tensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於置零自注意力模組中選定頭部的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示頭部未被掩蓋
    • 0 表示頭部被掩蓋
  • inputs_embeds (torch.Tensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果你希望比模型的內部嵌入查詢矩陣更多地控制如何將 input_ids 索引轉換為關聯向量,這會很有用。
  • encoder_hidden_states (torch.Tensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 編碼器最後一層輸出的隱藏狀態序列。如果模型被配置為解碼器,則在交叉注意力中使用。
  • encoder_attention_mask (torch.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在編碼器輸入的填充標記索引上執行注意力操作的掩碼。如果模型被配置為解碼器,該掩碼會用於交叉注意力。掩碼值選自 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼
  • past_key_values (list[torch.FloatTensor]可選) — 預先計算的隱藏狀態(自注意力和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常由模型在解碼的先前階段返回的 past_key_values 組成,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,請參閱我們的 kv 快取指南
    • 一個長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果沒有傳遞 past_key_values,將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後的 input_ids(那些沒有為其提供過去鍵值狀態的 ID),形狀為 (batch_size, 1),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • 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.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentionstuple(torch.FloatTensor)

一個 transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置(CamembertConfig)和輸入包含不同的元素。

  • last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

  • pooler_output (torch.FloatTensor,形狀為 (batch_size, hidden_size)) — 序列中第一個標記(分類標記)的最後一層隱藏狀態,經過用於輔助預訓練任務的層進一步處理。例如,對於 BERT 系列模型,這將返回分類標記經過線性層和 tanh 啟用函式處理後的結果。線性層的權重是在預訓練期間根據下一句預測(分類)目標進行訓練的。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入層的輸出,外加每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.add_cross_attention=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

  • past_key_values (Cache可選,當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。更多詳細資訊,請參閱我們的 kv 快取指南

    包含預先計算的隱藏狀態(自注意力塊中的鍵和值,如果 config.is_encoder_decoder=True,則可選地包含交叉注意力塊中的鍵和值),可用於(請參閱 past_key_values 輸入)加速序列解碼。

CamembertModel 的前向方法會覆蓋 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

CamembertForCausalLM

class transformers.CamembertForCausalLM

< >

( config )

引數

  • config (CamembertForCausalLM) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有 language modeling 頭的 CamemBERT 模型,用於因果語言模型(CLM)微調。

此模型繼承自 PreTrainedModel。請查閱超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( 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.Optional[tuple[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.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在填充標記索引上執行注意力操作的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 段標記索引,用於指示輸入的第一部分和第二部分。索引選自 [0, 1]

    • 0 對應於*句子 A*標記,
    • 1 對應於*句子 B*標記。僅當模型初始化時 type_vocab_size 引數的值

      = 2 時才能使用此引數。此張量中的所有值應始終 < type_vocab_size。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 每個輸入序列標記在位置嵌入中的位置索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • 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 索引轉換為相關向量,這將非常有用。
  • encoder_hidden_states (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 編碼器最後一層輸出的隱藏狀態序列。如果模型被配置為解碼器,則用於交叉注意力。
  • encoder_attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在編碼器輸入的填充標記索引上執行注意力操作的掩碼。如果模型被配置為解碼器,該掩碼會用於交叉注意力。掩碼值選自 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼
  • labels (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 用於計算從左到右語言模型損失(下一個詞預測)的標籤。索引應在 [-100, 0, ..., config.vocab_size] 範圍內(請參閱 input_ids 文件字串)。索引設定為 -100 的標記將被忽略(掩碼),損失僅針對標籤在 [0, ..., config.vocab_size] 範圍內的標記進行計算。
  • past_key_values (tuple[tuple[torch.FloatTensor]]可選) — 預先計算的隱藏狀態(自注意力和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常由模型在解碼的先前階段返回的 past_key_values 組成,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,請參閱我們的 kv 快取指南
    • 一個長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果沒有傳遞 past_key_values,將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後的 input_ids(那些沒有為其提供過去鍵值狀態的 ID),形狀為 (batch_size, 1),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • 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.modeling_outputs.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

一個 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置(CamembertConfig)和輸入包含不同的元素。

  • loss (torch.FloatTensor 形狀為 (1,)可選,當提供 labels 時返回) — 語言建模損失(用於下一個 token 預測)。

  • logits (形狀為 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入層的輸出,外加每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的交叉注意力權重,用於計算交叉注意力頭中的加權平均。

  • past_key_values (Cache可選,當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。更多詳細資訊,請參閱我們的 kv 快取指南

    包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

CamembertForCausalLM 的前向方法會覆蓋 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, CamembertForCausalLM, AutoConfig
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> config = AutoConfig.from_pretrained("almanach/camembert-base")
>>> config.is_decoder = True
>>> model = CamembertForCausalLM.from_pretrained("almanach/camembert-base", config=config)

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)

>>> prediction_logits = outputs.logits

CamembertForMaskedLM

class transformers.CamembertForMaskedLM

< >

( config )

引數

  • config (CamembertForMaskedLM) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有 language modeling 頭的 Camembert 模型。”

此模型繼承自 PreTrainedModel。請查閱超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( 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.MaskedLMOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在填充標記索引上執行注意力操作的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 段標記索引,用於指示輸入的第一部分和第二部分。索引選自 [0, 1]

    • 0 對應於*句子 A*標記,
    • 1 對應於*句子 B*標記。僅當模型初始化時 type_vocab_size 引數的值

      = 2 時才能使用此引數。此張量中的所有值應始終 < type_vocab_size。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 每個輸入序列標記在位置嵌入中的位置索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • 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 索引轉換為相關向量,這將非常有用。
  • encoder_hidden_states (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 編碼器最後一層輸出的隱藏狀態序列。如果模型被配置為解碼器,則用於交叉注意力。
  • encoder_attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免在編碼器輸入的填充標記索引上執行注意力操作的掩碼。如果模型被配置為解碼器,該掩碼會用於交叉注意力。掩碼值選自 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼
  • labels (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 用於計算掩碼語言模型損失的標籤。索引應在 [-100, 0, ..., config.vocab_size] 範圍內(請參閱 input_ids 文件字串)。索引設定為 -100 的標記將被忽略(掩碼),損失僅針對標籤在 [0, ..., config.vocab_size] 範圍內的標記進行計算。
  • output_attentions (bool可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.MaskedLMOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.MaskedLMOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置 (CamembertConfig) 和輸入而變化的各種元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 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 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入層的輸出,外加每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

CamembertForMaskedLM 的 forward 方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, CamembertForMaskedLM
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = CamembertForMaskedLM.from_pretrained("almanach/camembert-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)
...

>>> 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)
...

CamembertForSequenceClassification

class transformers.CamembertForSequenceClassification

< >

( config )

引數

CamemBERT 模型,頂部帶有一個序列分類/迴歸頭(在池化輸出之上是一個線性層),例如用於 GLUE 任務。

此模型繼承自 PreTrainedModel。請查閱超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( 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.SequenceClassifierOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length), 可選) — 用於避免在填充標記索引上執行注意力的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記被遮蓋

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 用於指示輸入的第一部分和第二部分的片段標記索引。索引選自 [0, 1]

    • 0 對應於句子 A 的標記,
    • 1 對應於句子 B 的標記。此引數僅在模型使用值為 type_vocab_size 的引數初始化時才能使用

      = 2。此張量中的所有值應始終 < type_vocab_size。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 位置嵌入中每個輸入序列標記的位置索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • 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 索引轉換為關聯向量,這會很有用。
  • labels (torch.LongTensor,形狀為 (batch_size,), 可選) — 用於計算序列分類/迴歸損失的標籤。索引應在 [0, ..., config.num_labels - 1] 範圍內。如果 config.num_labels == 1,則計算迴歸損失(均方損失),如果 config.num_labels > 1,則計算分類損失(交叉熵)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.SequenceClassifierOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.SequenceClassifierOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置 (CamembertConfig) 和輸入而變化的各種元素。

  • 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=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入層的輸出,外加每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

CamembertForSequenceClassification 的 forward 方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

單標籤分類示例

>>> import torch
>>> from transformers import AutoTokenizer, CamembertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = CamembertForSequenceClassification.from_pretrained("almanach/camembert-base")

>>> 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]
...

>>> # 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 = CamembertForSequenceClassification.from_pretrained("almanach/camembert-base", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

多標籤分類示例

>>> import torch
>>> from transformers import AutoTokenizer, CamembertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = CamembertForSequenceClassification.from_pretrained("almanach/camembert-base", 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 = CamembertForSequenceClassification.from_pretrained(
...     "almanach/camembert-base", 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

CamembertForMultipleChoice

class transformers.CamembertForMultipleChoice

< >

( config )

引數

  • config (CamembertForMultipleChoice) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

Camembert 模型,頂部帶有一個多項選擇分類頭(在池化輸出之上是一個線性層和一個 softmax),例如用於 RocStories/SWAG 任務。

此模型繼承自 PreTrainedModel。請查閱超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( 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.MultipleChoiceModelOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, num_choices, sequence_length)) — 詞彙表中輸入序列標記的索引。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, num_choices, sequence_length), 可選) — 用於指示輸入的第一部分和第二部分的片段標記索引。索引選自 [0, 1]

    • 0 對應於句子 A 的標記,
    • 1 對應於句子 B 的標記。此引數僅在模型使用值為 type_vocab_size 的引數初始化時才能使用

      = 2。此張量中的所有值應始終 < type_vocab_size。

    什麼是標記型別 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length), 可選) — 用於避免在填充標記索引上執行注意力的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記被遮蓋

    什麼是注意力掩碼?

  • labels (torch.LongTensor,形狀為 (batch_size,), 可選) — 用於計算多項選擇分類損失的標籤。索引應在 [0, ..., num_choices-1] 範圍內,其中 num_choices 是輸入張量第二維的大小。(見上文的 input_ids
  • position_ids (torch.LongTensor,形狀為 (batch_size, num_choices, sequence_length), 可選) — 位置嵌入中每個輸入序列標記的位置索引。選自範圍 [0, config.max_position_embeddings - 1]

    什麼是位置 ID?

  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads), 可選) — 用於使自注意力模組的選定頭無效的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭未被遮蓋
    • 0 表示頭被遮蓋
  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, num_choices, sequence_length, hidden_size), 可選) — 可選地,你可以選擇直接傳遞嵌入表示而不是 input_ids。如果你想比模型的內部嵌入查詢矩陣更多地控制如何將 input_ids 索引轉換為關聯向量,這會很有用。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.MultipleChoiceModelOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.MultipleChoiceModelOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置 (CamembertConfig) 和輸入而變化的各種元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失。

  • logits (形狀為 (batch_size, num_choices)torch.FloatTensor) — num_choices 是輸入張量的第二維大小。(請參閱上面的 input_ids)。

    分類分數(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入層的輸出,外加每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

CamembertForMultipleChoice 的 forward 方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, CamembertForMultipleChoice
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = CamembertForMultipleChoice.from_pretrained("almanach/camembert-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

CamembertForTokenClassification

class transformers.CamembertForTokenClassification

< >

( config )

引數

  • config (CamembertForTokenClassification) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

Camembert 模型,頂部帶有一個標記分類頭(在隱藏狀態輸出之上是一個線性層),例如用於命名實體識別 (NER) 任務。

此模型繼承自 PreTrainedModel。請查閱超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( 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.TokenClassifierOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length), 可選) — 用於避免在填充標記索引上執行注意力的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記被遮蓋

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 用於指示輸入的第一部分和第二部分的片段標記索引。索引選自 [0, 1]

    • 0 對應於句子 A 的標記,
    • 1 對應於句子 B 的標記。此引數僅在模型使用值為 type_vocab_size 的引數初始化時才能使用

      = 2。此張量中的所有值應始終 < type_vocab_size。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 位置嵌入中每個輸入序列標記的位置索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • 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 索引轉換為關聯向量,這會很有用。
  • labels (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 用於計算標記分類損失的標籤。索引應在 [0, ..., config.num_labels - 1] 範圍內。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.TokenClassifierOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),包含根據配置 (CamembertConfig) 和輸入而變化的各種元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失。

  • logits (形狀為 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分類分數(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入層的輸出,外加每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

CamembertForTokenClassification 的 forward 方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, CamembertForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = CamembertForTokenClassification.from_pretrained("almanach/camembert-base")

>>> 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
...

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

CamembertForQuestionAnswering

class transformers.CamembertForQuestionAnswering

< >

( config )

引數

  • config (CamembertForQuestionAnswering) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

Camembert 模型,頂部帶有一個跨度分類頭,用於像 SQuAD 這樣的抽取式問答任務(在隱藏狀態輸出之上是一個線性層,用於計算 `span start logits` 和 `span end logits`)。

此模型繼承自 PreTrainedModel。請查閱超類文件以瞭解該庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( 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.QuestionAnsweringModelOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對填充標記索引執行注意力操作的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記已被遮蓋

    什麼是注意力掩碼?

  • token_type_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 段標記索引,用於指示輸入的第一部分和第二部分。索引選自 [0,1]

    • 0 對應於 *A 句子* 的標記,
    • 1 對應於 *B 句子* 的標記。此引數僅在模型使用值為 type_vocab_size 的引數初始化時才能使用

      = 2。此張量中的所有值應始終 < type_vocab_size。

    什麼是標記型別 ID?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 位置嵌入中每個輸入序列標記的位置索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • 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 索引轉換為相關向量有更多控制,這會很有用。
  • start_positions (torch.LongTensor,形狀為 (batch_size,)可選) — 標記的答案範圍開始位置(索引)的標籤,用於計算標記分類損失。位置被限制在序列長度(sequence_length)之內。超出序列範圍的位置在計算損失時不會被考慮。
  • end_positions (torch.LongTensor,形狀為 (batch_size,)可選) — 標記的答案範圍結束位置(索引)的標籤,用於計算標記分類損失。位置被限制在序列長度(sequence_length)之內。超出序列範圍的位置在計算損失時不會被考慮。
  • output_attentions (bool可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_outputs.QuestionAnsweringModelOutputtuple(torch.FloatTensor)

transformers.modeling_outputs.QuestionAnsweringModelOutputtorch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置(CamembertConfig)和輸入包含各種元素。

  • loss (torch.FloatTensor of shape (1,), 可選, 當提供 labels 時返回) — 總範圍提取損失是起始位置和結束位置的交叉熵之和。

  • start_logits (torch.FloatTensor of shape (batch_size, sequence_length)) — 範圍起始分數(SoftMax 之前)。

  • end_logits (torch.FloatTensor of shape (batch_size, sequence_length)) — 範圍結束分數(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個為嵌入層的輸出,外加每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

CamembertForQuestionAnswering 的前向方法,覆蓋了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, CamembertForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = CamembertForQuestionAnswering.from_pretrained("almanach/camembert-base")

>>> 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)
...

>>> # 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)
...
TensorFlow
隱藏 TensorFlow 內容

TFCamembertModel

class transformers.TFCamembertModel

< >

( config *inputs **kwargs )

引數

  • config (CamembertConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

原始的 CamemBERT 模型 Transformer,輸出原始的隱藏狀態,頂部沒有任何特定的頭。

該模型繼承自 TFPreTrainedModel。請檢視超類的文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與常規用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 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 函式一樣傳遞輸入!

呼叫

< >

( 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.TFBaseModelOutputWithPoolingAndCrossAttentionstuple(tf.Tensor)

引數

  • input_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.call()PreTrainedTokenizer.encode()

    什麼是輸入 ID?

  • attention_mask (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對填充標記索引執行注意力操作的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記已被遮蓋

    什麼是注意力掩碼?

  • token_type_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 段標記索引,用於指示輸入的第一部分和第二部分。索引選自 [0, 1]

    • 0 對應於 *A 句子* 的標記,
    • 1 對應於 *B 句子* 的標記。

    什麼是標記型別 ID?

  • position_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 位置嵌入中每個輸入序列標記的位置索引。選自範圍 [0, config.max_position_embeddings - 1]

    什麼是位置 ID?

  • head_mask (Numpy 陣列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。此引數只能在即時模式下使用,在圖模式下將使用配置中的值。
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states。此引數只能在即時模式下使用,在圖模式下將使用配置中的值。
  • return_dict (bool可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。此引數可以在即時模式下使用,在圖模式下該值將始終設定為 True。
  • training (bool可選,預設為 False) — 是否在訓練模式下使用模型(某些模組如 dropout 模組在訓練和評估之間有不同的行為)。
  • encoder_hidden_states (tf.Tensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 編碼器最後一層輸出的隱藏狀態序列。如果模型被配置為解碼器,則在交叉注意力中使用。
  • encoder_attention_mask (tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對編碼器輸入的填充標記索引執行注意力操作的掩碼。如果模型被配置為解碼器,此掩碼在交叉注意力中使用。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記已被遮蓋
  • past_key_values (長度為 config.n_layerstuple[tuple[tf.Tensor]]) — 包含預先計算的注意力塊的鍵和值隱藏狀態。可用於加速解碼。如果使用 past_key_values,使用者可以選擇只輸入形狀為 (batch_size, 1) 的最後一個 decoder_input_ids(那些沒有給出其過去鍵值狀態的 ID),而不是所有形狀為 (batch_size, sequence_length)decoder_input_ids
  • use_cache (bool可選,預設為 True) — 如果設定為 True,則返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。訓練時設定為 False,生成時設定為 True

返回

transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentionstuple(tf.Tensor)

transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentions 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置(CamembertConfig)和輸入包含各種元素。

  • last_hidden_state (tf.Tensor of shape (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

  • pooler_output (tf.Tensor,形狀為 (batch_size, hidden_size)) — 序列第一個標記(分類標記)的最後一層隱藏狀態,經過線性層和 Tanh 啟用函式進一步處理。線性層權重是在預訓練期間從下一句預測(分類)目標中訓練的。

    此輸出通常不是輸入語義內容的良好摘要,通常最好對整個輸入序列的隱藏狀態進行平均或池化。

  • past_key_values (list[tf.Tensor]可選,當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 長度為 config.n_layerstf.Tensor 列表,每個張量的形狀為 (2, batch_size, num_heads, sequence_length, embed_size_per_head))。

    包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(tf.Tensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

TFCamembertModel 的前向方法,覆蓋了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, TFCamembertModel
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = TFCamembertModel.from_pretrained("almanach/camembert-base")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)

>>> last_hidden_states = outputs.last_hidden_state

TFCamembertForCausalLM

class transformers.TFCamembertForCausalLM

< >

( config: CamembertConfig *inputs **kwargs )

引數

  • config (CamembertConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有 language modeling 頭的 CamemBERT 模型,用於因果語言模型(CLM)微調。

該模型繼承自 TFPreTrainedModel。請檢視超類的文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與常規用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 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 函式一樣傳遞輸入!

呼叫

< >

( 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.TFCausalLMOutputWithCrossAttentionstuple(tf.Tensor)

引數

  • input_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.call()PreTrainedTokenizer.encode()

    什麼是輸入 ID?

  • attention_mask (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對填充標記索引執行注意力操作的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記已被遮蓋

    什麼是注意力掩碼?

  • token_type_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 段標記索引,用於指示輸入的第一部分和第二部分。索引選自 [0, 1]

    • 0 對應於 *A 句子* 的標記,
    • 1 對應於 *B 句子* 的標記。

    什麼是標記型別 ID?

  • position_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 位置嵌入中每個輸入序列標記的位置索引。選自範圍 [0, config.max_position_embeddings - 1]

    什麼是位置 ID?

  • head_mask (Numpy 陣列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。此引數只能在即時模式下使用,在圖模式下將使用配置中的值。
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states。此引數只能在即時模式下使用,在圖模式下將使用配置中的值。
  • return_dict (bool可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。此引數可以在即時模式下使用,在圖模式下該值將始終設定為 True。
  • training (bool可選,預設為 False) — 是否在訓練模式下使用模型(某些模組如 dropout 模組在訓練和評估之間有不同的行為)。
  • encoder_hidden_states (tf.Tensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 編碼器最後一層輸出的隱藏狀態序列。如果模型被配置為解碼器,則在交叉注意力中使用。
  • encoder_attention_mask (tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對編碼器輸入的填充標記索引執行注意力操作的掩碼。如果模型被配置為解碼器,此掩碼在交叉注意力中使用。掩碼值選自 [0, 1]

    • 1 表示標記未被遮蓋
    • 0 表示標記已被遮蓋
  • past_key_values (長度為 config.n_layerstuple[tuple[tf.Tensor]]) — 包含預先計算的注意力塊的鍵和值隱藏狀態。可用於加速解碼。如果使用 past_key_values,使用者可以選擇只輸入形狀為 (batch_size, 1) 的最後一個 decoder_input_ids(那些沒有給出其過去鍵值狀態的 ID),而不是所有形狀為 (batch_size, sequence_length)decoder_input_ids
  • use_cache (bool可選,預設為 True) — 如果設定為 True,則返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。訓練時設定為 False,生成時設定為 True
  • labels (tf.Tensornp.ndarray,形狀為 (batch_size, sequence_length), 可選) — 用於計算交叉熵分類損失的標籤。索引應在 [0, ..., config.vocab_size - 1] 範圍內。

返回

transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentionstuple(tf.Tensor)

transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含的各種元素取決於配置(CamembertConfig)和輸入。

  • loss (形狀為(n,)tf.Tensor可選,其中n是非掩碼標籤的數量,當提供了labels時返回) — 語言建模損失(用於下一標記預測)。

  • logits (tf.Tensor of shape (batch_size, sequence_length, config.vocab_size)) — 語言模型頭部的預測分數(SoftMax 之前每個詞彙標記的分數)。

  • hidden_states (tuple(tf.Tensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • cross_attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

  • past_key_values (list[tf.Tensor]可選,當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 長度為 config.n_layerstf.Tensor 列表,每個張量的形狀為 (2, batch_size, num_heads, sequence_length, embed_size_per_head))。

    包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

TFCamembertForCausalLM 的前向方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, TFCamembertForCausalLM
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = TFCamembertForCausalLM.from_pretrained("almanach/camembert-base")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> logits = outputs.logits

TFCamembertForMaskedLM

class transformers.TFCamembertForMaskedLM

< >

( config *inputs **kwargs )

引數

  • config (CamembertConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有“語言建模”頭的 CamemBERT 模型。

該模型繼承自 TFPreTrainedModel。請檢視超類的文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與常規用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 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 函式一樣傳遞輸入!

呼叫

< >

( 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.TFMaskedLMOutputtuple(tf.Tensor)

引數

  • input_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。

    索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.call()PreTrainedTokenizer.encode()

    什麼是輸入 ID?

  • attention_mask (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length), 可選) — 用於避免在填充標記索引上執行注意力機制的掩碼。掩碼值的選擇範圍是 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length), 可選) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引的選擇範圍是 [0, 1]

    • 0 對應於一個 句子 A 的標記,
    • 1 對應於一個 句子 B 的標記。

    什麼是標記型別 ID?

  • position_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length), 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍在 [0, config.max_position_embeddings - 1] 內。

    什麼是位置 ID?

  • head_mask (Numpy 陣列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 mode)下使用,在圖模式(graph mode)下將使用配置中的值。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states。此引數只能在即時模式(eager mode)下使用,在圖模式(graph mode)下將使用配置中的值。
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。此引數可以在即時模式(eager mode)下使用,在圖模式(graph mode)下該值將始終設定為 True。
  • training (bool, 可選, 預設為 False) — 是否在訓練模式下使用模型(一些模組如 dropout 模組在訓練和評估之間有不同的行為)。
  • labels (tf.Tensor,形狀為 (batch_size, sequence_length), 可選) — 用於計算掩碼語言建模損失的標籤。索引應在 [-100, 0, ..., config.vocab_size] 範圍內(見 input_ids 文件字串)。索引設定為 -100 的標記將被忽略(掩碼),損失僅對標籤在 [0, ..., config.vocab_size] 範圍內的標記進行計算。

返回

transformers.modeling_tf_outputs.TFMaskedLMOutputtuple(tf.Tensor)

transformers.modeling_tf_outputs.TFMaskedLMOutput 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含的各種元素取決於配置(CamembertConfig)和輸入。

  • loss (tf.Tensor of shape (n,), 可選, 其中 n 是非掩碼標籤的數量,當提供 labels 時返回) — 掩碼語言模型 (MLM) 損失。

  • logits (tf.Tensor of shape (batch_size, sequence_length, config.vocab_size)) — 語言模型頭部的預測分數(SoftMax 之前每個詞彙標記的分數)。

  • hidden_states (tuple(tf.Tensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

TFCamembertForMaskedLM 的前向方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, TFCamembertForMaskedLM
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = TFCamembertForMaskedLM.from_pretrained("almanach/camembert-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'
>>> labels = tokenizer("The capital of France is Paris.", return_tensors="tf")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = tf.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)

>>> outputs = model(**inputs, labels=labels)
>>> round(float(outputs.loss), 2)
0.1

TFCamembertForSequenceClassification

class transformers.TFCamembertForSequenceClassification

< >

( config *inputs **kwargs )

引數

  • config (CamembertConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

CamemBERT 模型,頂部帶有一個序列分類/迴歸頭(在池化輸出之上是一個線性層),例如用於 GLUE 任務。

該模型繼承自 TFPreTrainedModel。請檢視超類的文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與常規用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 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 函式一樣傳遞輸入!

呼叫

< >

( 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.TFSequenceClassifierOutputtuple(tf.Tensor)

引數

  • input_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。

    索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.call()PreTrainedTokenizer.encode()

    什麼是輸入 ID?

  • attention_mask (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length), 可選) — 用於避免在填充標記索引上執行注意力機制的掩碼。掩碼值的選擇範圍是 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length), 可選) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引的選擇範圍是 [0, 1]

    • 0 對應於一個 句子 A 的標記,
    • 1 對應於一個 句子 B 的標記。

    什麼是標記型別 ID?

  • position_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, sequence_length), 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍在 [0, config.max_position_embeddings - 1] 內。

    什麼是位置 ID?

  • head_mask (Numpy 陣列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 mode)下使用,在圖模式(graph mode)下將使用配置中的值。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states。此引數只能在即時模式(eager mode)下使用,在圖模式(graph mode)下將使用配置中的值。
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。此引數可以在即時模式(eager mode)下使用,在圖模式(graph mode)下該值將始終設定為 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.TFSequenceClassifierOutputtuple(tf.Tensor)

transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含的各種元素取決於配置(CamembertConfig)和輸入。

  • 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)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

TFCamembertForSequenceClassification 的前向方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, TFCamembertForSequenceClassification
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("cardiffnlp/twitter-roberta-base-emotion")
>>> model = TFCamembertForSequenceClassification.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 = TFCamembertForSequenceClassification.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

TFCamembertForMultipleChoice

class transformers.TFCamembertForMultipleChoice

< >

( config *inputs **kwargs )

引數

  • config (CamembertConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

CamemBERT 模型,其頂部帶有一個多項選擇分類頭(池化輸出頂部的一個線性層和一個 softmax),例如用於 RocStories/SWAG 任務。

該模型繼承自 TFPreTrainedModel。請檢視超類的文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與常規用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 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 函式一樣傳遞輸入!

呼叫

< >

( 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.TFMultipleChoiceModelOutputtuple(tf.Tensor)

引數

  • input_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, num_choices, sequence_length)) — 詞彙表中輸入序列標記的索引。

    索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.call()PreTrainedTokenizer.encode()

    什麼是輸入 ID?

  • attention_mask (Numpy 陣列tf.Tensor,形狀為 (batch_size, num_choices, sequence_length), 可選) — 用於避免在填充標記索引上執行注意力機制的掩碼。掩碼值的選擇範圍是 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記已被掩碼

    什麼是注意力掩碼?

  • token_type_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, num_choices, sequence_length), 可選) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引的選擇範圍是 [0, 1]

    • 0 對應於一個 句子 A 的標記,
    • 1 對應於一個 句子 B 的標記。

    什麼是標記型別 ID?

  • position_ids (Numpy 陣列tf.Tensor,形狀為 (batch_size, num_choices, sequence_length), 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍在 [0, config.max_position_embeddings - 1] 內。

    什麼是位置 ID?

  • head_mask (Numpy 陣列tf.Tensor,形狀為 (num_heads,)(num_layers, num_heads), 可選) — 用於置零自注意力模組中選定頭的掩碼。掩碼值的選擇範圍是 [0, 1]

    • 1 表示頭未被掩碼
    • 0 表示頭已被掩碼
  • inputs_embeds (tf.Tensor,形狀為 (batch_size, num_choices, sequence_length, hidden_size), 可選) — 可選地,你可以不傳遞 input_ids,而是直接傳遞一個嵌入表示。如果你想比模型內部的嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為相關向量,這會非常有用。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions。此引數只能在即時模式(eager mode)下使用,在圖模式(graph mode)下將使用配置中的值。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states。此引數只能在即時模式(eager mode)下使用,在圖模式(graph mode)下將使用配置中的值。
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。此引數可以在即時模式(eager mode)下使用,在圖模式(graph mode)下該值將始終設定為 True。
  • training (bool, 可選, 預設為 False) — 是否在訓練模式下使用模型(一些模組如 dropout 模組在訓練和評估之間有不同的行為)。
  • labels (tf.Tensor,形狀為 (batch_size,), 可選) — 用於計算多項選擇分類損失的標籤。索引應在 [0, ..., num_choices] 範圍內,其中 num_choices 是輸入張量第二維的大小。(見上文的 input_ids

返回

transformers.modeling_tf_outputs.TFMultipleChoiceModelOutputtuple(tf.Tensor)

transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含的各種元素取決於配置(CamembertConfig)和輸入。

  • loss (tf.Tensor,形狀為 (batch_size, )可選,當提供 labels 時返回) — 分類損失。

  • logits (tf.Tensor,形狀為 (batch_size, num_choices)) — num_choices 是輸入張量的第二維。(參見上面的 input_ids)。

    分類分數(SoftMax 之前)。

  • hidden_states (tuple(tf.Tensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

TFCamembertForMultipleChoice 的前向方法,重寫了 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, TFCamembertForMultipleChoice
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("almanach/camembert-base")
>>> model = TFCamembertForMultipleChoice.from_pretrained("almanach/camembert-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

TFCamembertForTokenClassification

class transformers.TFCamembertForTokenClassification

< >

( config *inputs **kwargs )

引數

  • config (CamembertConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型關聯的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

CamemBERT 模型,頂部帶有一個 token 分類頭(即在隱藏狀態輸出之上加一個線性層),例如用於命名實體識別(NER)任務。

該模型繼承自 TFPreTrainedModel。請檢視超類的文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與常規用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 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 函式一樣傳遞輸入!

呼叫

< >

( 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.TFTokenClassifierOutputtuple(tf.Tensor)

引數

  • input_ids (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列 token 的索引。

    索引可以使用 AutoTokenizer 獲取。詳情請參閱 PreTrainedTokenizer.call()PreTrainedTokenizer.encode()

    什麼是輸入 ID?

  • attention_mask (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對填充 token 索引進行注意力計算的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示 token 未被遮蔽
    • 0 表示 token 被遮蔽

    什麼是注意力掩碼?

  • token_type_ids (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於指示輸入的第一部分和第二部分的段 token 索引。索引在 [0, 1] 中選擇:

    • 0 對應於 *A 句子* 的 token,
    • 1 對應於 *B 句子* 的 token。

    什麼是 token type ID?

  • position_ids (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)可選) — 每個輸入序列 token 在位置嵌入中的位置索引。在 [0, config.max_position_embeddings - 1] 範圍內選擇。

    什麼是位置 ID?

  • head_mask (Numpy arraytf.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 模式下使用,在圖模式下將使用配置中的值。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回的張量下的 hidden_states。此引數只能在 Eager 模式下使用,在圖模式下將使用配置中的值。
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。此引數可在 Eager 模式下使用,在圖模式下該值將始終設定為 True。
  • training (bool, 可選, 預設為 False) — 是否在訓練模式下使用模型(一些模組如 dropout 模組在訓練和評估之間有不同的行為)。
  • labels (tf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於計算 token 分類損失的標籤。索引應在 [0, ..., config.num_labels - 1] 範圍內。

返回

transformers.modeling_tf_outputs.TFTokenClassifierOutputtuple(tf.Tensor)

一個 transformers.modeling_tf_outputs.TFTokenClassifierOutput 或一個 tf.Tensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含根據配置 (CamembertConfig) 和輸入而異的各種元素。

  • loss (tf.Tensor,形狀為 (n,)可選,其中 n 是未被掩蓋的標籤數量,當提供 labels 時返回) — 分類損失。

  • logits (tf.Tensor,形狀為 (batch_size, sequence_length, config.num_labels)) — 分類分數(SoftMax 之前)。

  • hidden_states (tuple(tf.Tensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

TFCamembertForTokenClassification 的前向方法會覆蓋 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, TFCamembertForTokenClassification
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("ydshieh/roberta-large-ner-english")
>>> model = TFCamembertForTokenClassification.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']
>>> labels = predicted_token_class_ids
>>> loss = tf.math.reduce_mean(model(**inputs, labels=labels).loss)
>>> round(float(loss), 2)
0.01

TFCamembertForQuestionAnswering

class transformers.TFCamembertForQuestionAnswering

< >

( config *inputs **kwargs )

引數

  • config (CamembertConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型關聯的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

CamemBERT 模型,頂部帶有一個 span 分類頭,用於抽取式問答任務,如 SQuAD(在隱藏狀態輸出之上加一個線性層,用於計算 span start logitsspan end logits)。

該模型繼承自 TFPreTrainedModel。請檢視超類的文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等)。

該模型也是一個 keras.Model 子類。可以像常規的 TF 2.0 Keras 模型一樣使用它,並參考 TF 2.0 文件瞭解所有與常規用法和行為相關的事項。

transformers 中的 TensorFlow 模型和層接受兩種輸入格式

  • 所有輸入作為關鍵字引數(如 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 函式一樣傳遞輸入!

呼叫

< >

( 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.TFQuestionAnsweringModelOutputtuple(tf.Tensor)

引數

  • input_ids (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列 token 的索引。

    索引可以使用 AutoTokenizer 獲取。詳情請參閱 PreTrainedTokenizer.call()PreTrainedTokenizer.encode()

    什麼是輸入 ID?

  • attention_mask (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於避免對填充 token 索引進行注意力計算的掩碼。掩碼值在 [0, 1] 中選擇:

    • 1 表示 token 未被遮蔽
    • 0 表示 token 被遮蔽

    什麼是注意力掩碼?

  • token_type_ids (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)可選) — 用於指示輸入的第一部分和第二部分的段 token 索引。索引在 [0, 1] 中選擇:

    • 0 對應於 *A 句子* 的 token,
    • 1 對應於 *B 句子* 的 token。

    什麼是 token type ID?

  • position_ids (Numpy arraytf.Tensor,形狀為 (batch_size, sequence_length)可選) — 每個輸入序列 token 在位置嵌入中的位置索引。在 [0, config.max_position_embeddings - 1] 範圍內選擇。

    什麼是位置 ID?

  • head_mask (Numpy arraytf.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 模式下使用,在圖模式下將使用配置中的值。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回的張量下的 hidden_states。此引數只能在 Eager 模式下使用,在圖模式下將使用配置中的值。
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。此引數可在 Eager 模式下使用,在圖模式下該值將始終設定為 True。
  • training (bool, 可選, 預設為 False) — 是否在訓練模式下使用模型(一些模組如 dropout 模組在訓練和評估之間有不同的行為)。
  • start_positions (tf.Tensor,形狀為 (batch_size,)可選) — 用於計算 token 分類損失的標記 span 起始位置(索引)的標籤。位置被限制在序列長度(sequence_length)內。序列之外的位置在計算損失時不予考慮。
  • end_positions (tf.Tensor,形狀為 (batch_size,)可選) — 用於計算 token 分類損失的標記 span 結束位置(索引)的標籤。位置被限制在序列長度(sequence_length)內。序列之外的位置在計算損失時不予考慮。

返回

transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutputtuple(tf.Tensor)

一個 transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或一個 tf.Tensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含根據配置 (CamembertConfig) 和輸入而異的各種元素。

  • loss (tf.Tensor,形狀為 (batch_size, )可選,當提供了 start_positionsend_positions 時返回) — 總的 span 抽取損失是起始位置和結束位置交叉熵的和。

  • start_logits (形狀為 (batch_size, sequence_length)tf.Tensor) — 跨度起始分數(SoftMax 之前)。

  • end_logits (形狀為 (batch_size, sequence_length)tf.Tensor) — 跨度結束分數(SoftMax 之前)。

  • hidden_states (tuple(tf.Tensor)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — tf.Tensor 的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — tf.Tensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

TFCamembertForQuestionAnswering 的前向方法會覆蓋 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoTokenizer, TFCamembertForQuestionAnswering
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("ydshieh/roberta-base-squad2")
>>> model = TFCamembertForQuestionAnswering.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'
>>> # target is "nice puppet"
>>> target_start_index = tf.constant([14])
>>> target_end_index = tf.constant([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = tf.math.reduce_mean(outputs.loss)
>>> round(float(loss), 2)
0.86
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.