Transformers 文件
T5
並獲得增強的文件體驗
開始使用
T5
T5是一個編碼器-解碼器Transformer,其尺寸範圍從60M到11B引數。它旨在透過將所有NLP任務視為文字到文字問題來處理各種NLP任務。這消除了對特定任務架構的需求,因為T5將每個NLP任務轉換為文字生成任務。
為了將所有任務都表示為文字生成,每個任務都預置了一個特定於任務的字首(例如,將英語翻譯成德語:……,總結:……)。這使得T5能夠處理翻譯、摘要、問答等任務。
您可以在T5集合下找到所有官方T5檢查點。
點選右側邊欄中的T5模型,瞭解更多如何將T5應用於不同語言任務的示例。
以下示例展示瞭如何使用Pipeline、AutoModel生成文字,以及如何透過命令列使用T5進行翻譯。
import torch
from transformers import pipeline
pipeline = pipeline(
task="text2text-generation",
model="google-t5/t5-base",
torch_dtype=torch.float16,
device=0
)
pipeline("translate English to French: The weather is nice today.")
量化透過以較低精度表示權重來減少大型模型的記憶體負擔。有關更多可用量化後端,請參閱量化概述。
以下示例使用torchao僅將權重量化為int4。
# pip install torchao
import torch
from transformers import TorchAoConfig, AutoModelForSeq2SeqLM, AutoTokenizer
quantization_config = TorchAoConfig("int4_weight_only", group_size=128)
model = AutoModelForSeq2SeqLM.from_pretrained(
"google/t5-v1_1-xl",
torch_dtype=torch.bfloat16,
device_map="auto",
quantization_config=quantization_config
)
tokenizer = AutoTokenizer.from_pretrained("google/t5-v1_1-xl")
input_ids = tokenizer("translate English to French: The weather is nice today.", return_tensors="pt").to("cuda")
output = model.generate(**input_ids, cache_implementation="static")
print(tokenizer.decode(output[0], skip_special_tokens=True))
注意事項
- T5使用相對標量嵌入,因此您可以對編碼器輸入進行左填充或右填充。
- T5模型需要的學習率略高於Trainer中使用的預設值。通常,對於大多數任務,
1e-4
和3e-4
的值效果良好。
T5Config
class transformers.T5Config
< source >( vocab_size = 32128 d_model = 512 d_kv = 64 d_ff = 2048 num_layers = 6 num_decoder_layers = None num_heads = 8 relative_attention_num_buckets = 32 relative_attention_max_distance = 128 dropout_rate = 0.1 layer_norm_epsilon = 1e-06 initializer_factor = 1.0 feed_forward_proj = 'relu' is_encoder_decoder = True use_cache = True pad_token_id = 0 eos_token_id = 1 classifier_dropout = 0.0 **kwargs )
引數
- vocab_size (
int
, optional, 預設為 32128) — T5模型的詞彙表大小。定義了呼叫T5Model或TFT5Model時傳入的inputs_ids
所能表示的不同標記的數量。 - d_model (
int
, optional, 預設為 512) — 編碼器層和池化器層的大小。 - d_kv (
int
, optional, 預設為 64) — 每個注意力頭鍵、查詢、值投影的大小。投影層的inner_dim
將被定義為num_heads * d_kv
。 - d_ff (
int
, optional, 預設為 2048) — 每個T5Block
中中間前饋層的大小。 - num_layers (
int
, optional, 預設為 6) — Transformer編碼器中的隱藏層數量。 - num_decoder_layers (
int
, optional) — Transformer解碼器中的隱藏層數量。如果未設定,則使用與num_layers
相同的值。 - num_heads (
int
, optional, 預設為 8) — Transformer編碼器中每個注意力層的注意力頭數量。 - relative_attention_num_buckets (
int
, optional, 預設為 32) — 每個注意力層使用的桶的數量。 - relative_attention_max_distance (
int
, optional, 預設為 128) — 用於桶分離的較長序列的最大距離。 - dropout_rate (
float
, optional, 預設為 0.1) — 所有Dropout層的比例。 - classifier_dropout (
float
, optional, 預設為 0.0) — 分類器的Dropout比例。 - layer_norm_eps (
float
, optional, 預設為 1e-6) — 層歸一化層使用的epsilon。 - initializer_factor (
float
, optional, 預設為 1) — 初始化所有權重矩陣的因子(應保持為 1,內部用於初始化測試)。 - feed_forward_proj (
string
, optional, 預設為"relu"
) — 要使用的前饋層型別。應為"relu"
或"gated-gelu"
之一。T5v1.1使用"gated-gelu"
前饋投影。原始T5使用"relu"
。 - use_cache (
bool
, optional, 預設為True
) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用此引數)。
這是用於儲存T5Model或TFT5Model配置的配置類。它用於根據指定引數例項化T5模型,定義模型架構。使用預設值例項化配置將生成與T5 google-t5/t5-small架構相似的配置。
配置物件繼承自PretrainedConfig,可用於控制模型輸出。有關這些方法的更多資訊,請參閱PretrainedConfig的文件。
T5分詞器
class transformers.T5Tokenizer
< source >( vocab_file eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' extra_ids = 100 additional_special_tokens = None sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None legacy = None add_prefix_space = True **kwargs )
引數
- vocab_file (
str
) — SentencePiece檔案(通常具有.spm副檔名),包含例項化分詞器所需的詞彙表。 - eos_token (
str
, optional, 預設為"</s>"
) — 序列結束符。當使用特殊標記構建序列時,這不是序列結束使用的標記。使用的標記是
sep_token
。 - unk_token (
str
, optional, 預設為"<unk>"
) — 未知標記。不在詞彙表中的標記不能轉換為ID,並被設定為此標記。 - pad_token (
str
, optional, 預設為"<pad>"
) — 用於填充的標記,例如在批處理不同長度的序列時。 - extra_ids (
int
, optional, 預設為 100) — 為用作標記的詞彙表新增額外ID的數量。這些標記可透過呼叫get_sentinel_tokens方法獲取,標記ID可透過呼叫get_sentinel_token_ids方法獲取 additional_special_tokens (list[str]
, optional): 分詞器使用的額外特殊標記。 - sp_model_kwargs (
dict
, optional) — 將傳遞給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的合併操作的dropout機率。
-
- legacy (
bool
, optional) — 是否應使用分詞器的legacy
行為。在#24622和#25224合併之前是legacy,這些合併包括正確處理特殊標記後出現的標記的修復。一個簡單示例:legacy=True
:
構造一個T5分詞器。基於SentencePiece。
此分詞器繼承自PreTrainedTokenizer,其中包含大部分主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
build_inputs_with_special_tokens
< source >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
透過連線和新增特殊標記,從序列或序列對構建用於序列分類任務的模型輸入。序列格式如下:
- 單個序列:
X </s>
- 序列對:
A </s> B </s>
get_special_tokens_mask
< source >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) → list[int]
從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model
方法新增特殊標記時呼叫。
create_token_type_ids_from_sequences
< source >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
根據傳入的兩個序列建立掩碼,用於序列對分類任務。T5 不使用令牌型別 ID,因此返回零列表。
T5TokenizerFast
class transformers.T5TokenizerFast
< source >( vocab_file = None tokenizer_file = None eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' extra_ids = 100 additional_special_tokens = None add_prefix_space = None **kwargs )
引數
- vocab_file (
str
) — 包含例項化分詞器所需詞彙表的 SentencePiece 檔案(通常具有 .spm 副檔名)。 - eos_token (
str
, 可選, 預設為"</s>"
) — 序列結束符。使用特殊令牌構建序列時,這不是用於序列結束的令牌。使用的令牌是
sep_token
。 - unk_token (
str
, 可選, 預設為"<unk>"
) — 未知令牌。詞彙表中沒有的令牌無法轉換為 ID,而是設定為此令牌。 - pad_token (
str
, 可選, 預設為"<pad>"
) — 用於填充的令牌,例如在批次處理不同長度的序列時。 - extra_ids (
int
, 可選, 預設為 100) — 新增到詞彙表中用作哨兵的額外 ID 數量。這些令牌可以透過“<extraid{%d}>”訪問,其中“{%d}”是 0 到 extra_ids-1 之間的數字。這些令牌可以透過呼叫 get_sentinel_tokens 方法獲取,令牌 ID 可以透過呼叫 get_sentinel_token_ids 方法獲取。 - additional_special_tokens (
list[str]
, 可選) — 分詞器使用的額外特殊令牌。 - add_prefix_space (
bool
, 可選) — 分詞器是否應自動新增字首空格。 - from_slow (
bool
, 可選, 預設為False
) — 分詞器是否應從慢速分詞器轉換而來。如果設定了add_prefix_space
,則會將其設定為True
。
構建一個“快速”T5 分詞器(由 HuggingFace 的 tokenizers 庫支援)。基於 Unigram。
此分詞器繼承自 PreTrainedTokenizerFast,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
build_inputs_with_special_tokens
< source >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
透過連線和新增特殊標記,從序列或序列對構建用於序列分類任務的模型輸入。序列格式如下:
- 單個序列:
X </s>
- 序列對:
A </s> B </s>
create_token_type_ids_from_sequences
< source >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
根據傳入的兩個序列建立掩碼,用於序列對分類任務。T5 不使用令牌型別 ID,因此返回零列表。
T5Model
class transformers.T5Model
< source >( config: T5Config )
引數
- config (T5Config) — 包含模型所有引數的模型配置類。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。
裸 T5 模型,輸出原始隱藏狀態,頂部沒有任何特定頭部。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用用法和行為相關的資訊。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None inputs_embeds: typing.Optional[torch.Tensor] = None decoder_inputs_embeds: typing.Optional[torch.Tensor] = 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 cache_position: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.Seq2SeqModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
) — 輸入序列令牌在詞彙表中的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在左右兩側填充輸入。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
, 可選) — 避免對填充令牌索引執行注意力的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示令牌未被掩蓋,
- 0 表示令牌被掩蓋。
- decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的torch.LongTensor
, 可選) — 解碼器輸入序列令牌在詞彙表中的索引。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
T5 使用
pad_token_id
作為decoder_input_ids
生成的起始令牌。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的)(參見past_key_values
)。要了解如何為預訓練準備
decoder_input_ids
,請檢視 T5 訓練。 - decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的torch.BoolTensor
, 可選) — 預設行為:生成一個忽略decoder_input_ids
中填充令牌的張量。預設情況下也會使用因果掩碼。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
, 可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被掩蓋,
- 0 表示頭部被掩蓋。
- decoder_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
, 可選) — 用於使解碼器中自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被掩蓋,
- 0 表示頭部被掩蓋。
- cross_attn_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
, 可選) — 用於使解碼器中交叉注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被掩蓋,
- 0 表示頭部被掩蓋。
- encoder_outputs (
tuple[tuple[torch.FloatTensor]]
, 可選) — 元組包含 (last_hidden_state
, 可選:hidden_states
, 可選:attentions
) 形狀為(batch_size, sequence_length, hidden_size)
的last_hidden_state
(可選)是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - past_key_values (
tuple[tuple[torch.FloatTensor]]
, 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼前一階段返回的past_key_values
,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- Cache 例項,請參閱我們的 kv cache 指南;
- 長度為
config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含兩個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量。這也稱為舊版快取格式。
模型將輸出與作為輸入饋送的快取格式相同的快取格式。如果未傳入
past_key_values
,將返回舊版快取格式。如果使用
past_key_values
,使用者可以選擇只輸入最後一個input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的),形狀為(batch_size, 1)
,而不是所有形狀為(batch_size, sequence_length)
的input_ids
。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.Tensor
, 可選) — 或者,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您希望對input_ids
索引如何轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,這將很有用。 - decoder_inputs_embeds (形狀為
(batch_size, target_sequence_length, hidden_size)
的torch.Tensor
, 可選) — 或者,您可以選擇直接傳遞嵌入表示,而不是傳遞decoder_input_ids
。如果使用past_key_values
,可以選擇只輸入最後一個decoder_inputs_embeds
(參見past_key_values
)。如果您希望對decoder_input_ids
索引如何轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,這將很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,decoder_inputs_embeds
將採用inputs_embeds
的值。 - use_cache (
bool
, 可選) — 如果設定為True
,將返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參見返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參見返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。 - cache_position (形狀為
(sequence_length)
的torch.LongTensor
, 可選) — 描述輸入序列令牌在序列中位置的索引。與position_ids
不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。
返回
transformers.modeling_outputs.Seq2SeqModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqModelOutput 或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含各種元素,具體取決於配置(T5Config)和輸入。
-
last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
) — 模型解碼器最後一層輸出的隱藏狀態序列。如果使用
past_key_values
,則僅輸出形狀為(batch_size, 1, hidden_size)
的序列的最後一個隱藏狀態。 -
past_key_values (
EncoderDecoderCache
, 可選, 當傳入use_cache=True
或config.use_cache=True
時返回) — 它是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每個層輸出的隱藏狀態,加上可選的初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每個層輸出的隱藏狀態,加上可選的初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
T5Model 的 forward 方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, T5Model
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = T5Model.from_pretrained("google-t5/t5-small")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids # Batch size 1
>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for T5Model.
>>> # This is not needed for torch's T5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)
>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
T5ForConditionalGeneration
class transformers.T5ForConditionalGeneration
< source >( config: T5Config )
引數
- config (T5Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化時,不會載入與模型相關的權重,只會載入配置。要載入模型權重,請檢視 from_pretrained() 方法。
頂部帶有 `language modeling` 頭的 T5 模型。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用用法和行為相關的資訊。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.Tensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.Tensor]]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = 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 cache_position: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列 token 的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在左右兩側填充輸入。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解更多關於如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於避免在填充 token 索引上執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示 token 未被掩碼,
- 0 表示 token 被掩碼。
- decoder_input_ids (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 詞彙表中解碼器輸入序列 token 的索引。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
T5 使用
pad_token_id
作為decoder_input_ids
生成的起始 token。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(那些沒有將它們的 past key value 狀態提供給此模型的)的形狀(batch_size, 1)
,而不是所有input_ids
的形狀(batch_size, sequence_length)
。要了解更多關於如何為預訓練準備
decoder_input_ids
,請檢視 T5 訓練。 - decoder_attention_mask (
torch.BoolTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充 token 的張量。預設情況下也將使用因果掩碼。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- decoder_head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使解碼器中自注意力模組的選定頭部無效的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- cross_attn_head_mask (
torch.Tensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使解碼器中交叉注意力模組的選定頭部無效的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- encoder_outputs (
tuple[tuple[torch.Tensor]]
,可選) — 元組由 (last_hidden_state
,可選:hidden_states
,可選:attentions
) 組成,last_hidden_state
的形狀為(batch_size, sequence_length, hidden_size)
,可選) 是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中用到。 - past_key_values (
tuple[tuple[torch.Tensor]]
,可選) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的past_key_values
,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- Cache 例項,請參閱我們的 kv cache 指南;
- 長度為
config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含 2 個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)。這也稱為舊版快取格式。
模型將輸出與輸入相同的快取格式。如果沒有傳入
past_key_values
,將返回舊版快取格式。如果使用
past_key_values
,使用者可以選擇只輸入最後一個input_ids
(那些沒有將其 past key value 狀態提供給此模型的)的形狀(batch_size, 1)
,而不是所有input_ids
的形狀(batch_size, sequence_length)
。 - inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您希望對input_ids
索引如何轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,這將很有用。 - decoder_inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, target_sequence_length, hidden_size)
,可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞decoder_input_ids
。如果使用past_key_values
,可以選擇只輸入最後一個decoder_inputs_embeds
(請參閱past_key_values
)。如果您希望對decoder_input_ids
索引如何轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,這將很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,decoder_inputs_embeds
將取inputs_embeds
的值。 - labels (
torch.LongTensor
,形狀為(batch_size,)
,可選) — 用於計算序列分類/迴歸損失的標籤。索引應在[-100, 0, ..., config.vocab_size - 1]
範圍內。所有設定為-100
的標籤都會被忽略(被掩碼),損失僅針對[0, ..., config.vocab_size]
範圍內的標籤計算。 - use_cache (
bool
,可選) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(請參閱past_key_values
)。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。 - cache_position (
torch.LongTensor
,形狀為(sequence_length)
,可選) — 表示輸入序列 token 在序列中位置的索引。與position_ids
不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqLMOutput 或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或當 config.return_dict=False
時),其中包含根據配置 (T5Config) 和輸入的不同元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,當提供labels
時返回) — 語言建模損失。 -
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 -
past_key_values (
EncoderDecoderCache
, 可選, 當傳入use_cache=True
或config.use_cache=True
時返回) — 它是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
T5ForConditionalGeneration 的 forward 方法,重寫了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, T5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("google-t5/t5-small")
>>> # training
>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids
>>> outputs = model(input_ids=input_ids, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits
>>> # inference
>>> input_ids = tokenizer(
... "summarize: studies have shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids # Batch size 1
>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
>>> # studies have shown that owning a dog is good for you.
T5EncoderModel
class transformers.T5EncoderModel
< source >( config: T5Config )
引數
- config (T5Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化時,不會載入與模型相關的權重,只會載入配置。要載入模型權重,請檢視 from_pretrained() 方法。
裸 T5 模型,輸出原始隱藏狀態,頂部沒有任何特定頭部。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用用法和行為相關的資訊。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = 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.BaseModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列 token 的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在左右兩側填充輸入。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解更多關於如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於避免在填充 token 索引上執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示 token 未被掩碼,
- 0 表示 token 被掩碼。
- 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
索引如何轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,這將很有用。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.BaseModelOutput 或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或當 config.return_dict=False
時),其中包含根據配置 (T5Config) 和輸入的不同元素。
-
last_hidden_state (
torch.FloatTensor
, 形狀為(batch_size, sequence_length, hidden_size)
) — 模型最後一層輸出的隱藏狀態序列。 -
hidden_states (
tuple(torch.FloatTensor)
,可選,當傳遞output_hidden_states=True
或當config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則為嵌入輸出,+ 每個層的輸出)形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
,可選,當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每個層一個)形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
T5EncoderModel 的 forward 方法,重寫了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, T5EncoderModel
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = T5EncoderModel.from_pretrained("google-t5/t5-small")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids # Batch size 1
>>> outputs = model(input_ids=input_ids)
>>> last_hidden_states = outputs.last_hidden_state
T5ForSequenceClassification
class transformers.T5ForSequenceClassification
< source >( config: T5Config )
引數
- config (T5Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化時,不會載入與模型相關的權重,只會載入配置。要載入模型權重,請檢視 from_pretrained() 方法。
頂部帶有序列分類/頭(在池化輸出之上新增線性層)的 T5 模型,例如用於 GLUE 任務。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用用法和行為相關的資訊。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.Tensor] = None decoder_head_mask: typing.Optional[torch.Tensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = 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.Seq2SeqSequenceClassifierOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列 token 的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在左右兩側填充輸入。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解更多關於如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (
torch.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 用於避免在填充 token 索引上執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示 token 未被掩碼,
- 0 表示 token 被掩碼。
- decoder_input_ids (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 詞彙表中解碼器輸入序列 token 的索引。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
T5 使用
pad_token_id
作為decoder_input_ids
生成的起始 token。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(那些沒有將它們的 past key value 狀態提供給此模型的)的形狀(batch_size, 1)
,而不是所有input_ids
的形狀(batch_size, sequence_length)
。要了解更多關於如何為預訓練準備
decoder_input_ids
,請檢視 T5 訓練。 - decoder_attention_mask (
torch.BoolTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充 token 的張量。預設情況下也將使用因果掩碼。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- decoder_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可選) — 用於使解碼器中自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- cross_attn_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
,可選) — 用於使解碼器中交叉注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- encoder_outputs (
list[torch.FloatTensor]
, 可選) — 元組包含 (last_hidden_state
, 可選:hidden_states
, 可選:attentions
)last_hidden_state
的形狀為(batch_size, sequence_length, hidden_size)
,可選) 是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果你想比模型內部的嵌入查詢矩陣更精細地控制如何將input_ids
索引轉換為相關向量,這會很有用。 - decoder_inputs_embeds (形狀為
(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞decoder_input_ids
。如果使用past_key_values
,可選地只需輸入最後的decoder_inputs_embeds
(參見past_key_values
)。如果你想比模型內部的嵌入查詢矩陣更精細地控制如何將decoder_input_ids
索引轉換為相關向量,這會很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,則decoder_inputs_embeds
取inputs_embeds
的值。 - labels (形狀為
(batch_size,)
的torch.LongTensor
,可選) — 用於計算序列分類/迴歸損失的標籤。索引應在[0, ..., config.num_labels - 1]
範圍內。如果config.num_labels > 1
則計算分類損失 (交叉熵)。 - 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.Seq2SeqSequenceClassifierOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput 或一個 torch.FloatTensor
元組 (如果傳入 return_dict=False
或 config.return_dict=False
),包含根據配置 (T5Config) 和輸入的不同元素。
-
loss (形狀為
(1,)
的torch.FloatTensor
,可選,當提供label
時返回) — 分類 (如果 config.num_labels==1 則為迴歸) 損失。 -
logits (形狀為
(batch_size, config.num_labels)
的torch.FloatTensor
) — 分類(如果 config.num_labels==1,則為迴歸)分數(SoftMax 之前)。 -
past_key_values (
EncoderDecoderCache
, 可選, 當傳入use_cache=True
或config.use_cache=True
時返回) — 它是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
T5ForSequenceClassification
的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
單標籤分類示例
>>> import torch
>>> from transformers import AutoTokenizer, T5ForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = T5ForSequenceClassification.from_pretrained("google-t5/t5-small")
>>> 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 = T5ForSequenceClassification.from_pretrained("google-t5/t5-small", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...
多標籤分類示例
>>> import torch
>>> from transformers import AutoTokenizer, T5ForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = T5ForSequenceClassification.from_pretrained("google-t5/t5-small", 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 = T5ForSequenceClassification.from_pretrained(
... "google-t5/t5-small", 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
T5ForTokenClassification
class transformers.T5ForTokenClassification
< source >( config: T5Config )
引數
- config (T5Config) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型相關的權重,只加載配置。請查閱 from_pretrained() 方法來載入模型權重。
帶有令牌分類頭(在隱藏狀態輸出之上有一個線性層)的 T5 轉換器,例如用於命名實體識別 (NER) 任務。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用用法和行為相關的資訊。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
) — 詞彙表中輸入序列令牌的索引。T5 是一個帶有相對位置嵌入的模型,因此你應該能夠在輸入的兩側(右側和左側)填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解如何為預訓練準備
input_ids
,請參閱 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的torch.Tensor
,可選) — 用於避免對填充令牌索引執行注意力的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示令牌未被遮蔽,
- 0 表示令牌被遮蔽。
- head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.Tensor
,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果你想比模型內部的嵌入查詢矩陣更精細地控制如何將input_ids
索引轉換為相關向量,這會很有用。 - labels (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 用於計算令牌分類損失的標籤。索引應在[0, ..., config.num_labels - 1]
範圍內。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參見返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參見返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。
返回
transformers.modeling_outputs.TokenClassifierOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.TokenClassifierOutput 或一個 torch.FloatTensor
元組 (如果傳入 return_dict=False
或 config.return_dict=False
),包含根據配置 (T5Config) 和輸入的不同元素。
-
loss (形狀為
(1,)
的torch.FloatTensor
,可選,當提供labels
時返回) — 分類損失。 -
logits (形狀為
(batch_size, sequence_length, config.num_labels)
的torch.FloatTensor
) — 分類分數(SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
,可選,當傳遞output_hidden_states=True
或當config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則為嵌入輸出,+ 每個層的輸出)形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
,可選,當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每個層一個)形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
T5ForTokenClassification
的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, T5ForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = T5ForTokenClassification.from_pretrained("google-t5/t5-small")
>>> 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)
...
T5ForQuestionAnswering
class transformers.T5ForQuestionAnswering
< source >( config: T5Config )
引數
- config (T5Config) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型相關的權重,只加載配置。請查閱 from_pretrained() 方法來載入模型權重。
用於提取式問答任務(如 SQuAD)的 T5 轉換器,頂部帶有一個跨度分類頭(在隱藏狀態輸出之上有一個線性層,用於計算 span start logits
和 span end logits
)。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與通用用法和行為相關的資訊。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.Tensor]]] = None start_positions: typing.Optional[torch.LongTensor] = None end_positions: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[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.Seq2SeqQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
) — 詞彙表中輸入序列令牌的索引。T5 是一個帶有相對位置嵌入的模型,因此你應該能夠在輸入的兩側(右側和左側)填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解如何為預訓練準備
input_ids
,請參閱 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
,可選) — 用於避免對填充令牌索引執行注意力的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示令牌未被遮蔽,
- 0 表示令牌被遮蔽。
- decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的torch.LongTensor
,可選) — 詞彙表中解碼器輸入序列令牌的索引。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
T5 使用
pad_token_id
作為decoder_input_ids
生成的起始令牌。如果使用past_key_values
,可選地只需輸入最後的decoder_input_ids
(參見past_key_values
)。要了解如何為預訓練準備
decoder_input_ids
,請參閱 T5 訓練。 - decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的torch.BoolTensor
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充令牌的張量。預設情況下也會使用因果掩碼。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- decoder_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可選) — 用於使解碼器中自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- cross_attn_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
,可選) — 用於使解碼器中交叉注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- encoder_outputs (
tuple[tuple[torch.Tensor]]
,可選) — 元組包含 (last_hidden_state
, 可選:hidden_states
, 可選:attentions
)last_hidden_state
的形狀為(batch_size, sequence_length, hidden_size)
,可選) 是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - start_positions (形狀為
(batch_size,)
的torch.LongTensor
,可選) — 用於計算令牌分類損失的標記跨度起始位置(索引)的標籤。位置被限制為序列的長度(sequence_length
)。序列外的位置不計入損失計算。 - end_positions (形狀為
(batch_size,)
的torch.LongTensor
,可選) — 用於計算令牌分類損失的標記跨度結束位置(索引)的標籤。位置被限制為序列的長度(sequence_length
)。序列外的位置不計入損失計算。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果你想比模型內部的嵌入查詢矩陣更精細地控制如何將input_ids
索引轉換為相關向量,這會很有用。 - decoder_inputs_embeds (形狀為
(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞decoder_input_ids
。如果使用past_key_values
,可選地只需輸入最後的decoder_inputs_embeds
(參見past_key_values
)。如果你想比模型內部的嵌入查詢矩陣更精細地控制如何將decoder_input_ids
索引轉換為相關向量,這會很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,則decoder_inputs_embeds
取inputs_embeds
的值。 - 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.Seq2SeqQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput 或一個 torch.FloatTensor
元組 (如果傳入 return_dict=False
或 config.return_dict=False
),包含根據配置 (T5Config) 和輸入的不同元素。
-
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 之前)。 -
past_key_values (
EncoderDecoderCache
, 可選, 當傳入use_cache=True
或config.use_cache=True
時返回) — 它是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(如果模型有嵌入層,則一個用於嵌入輸出,加上一個用於每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
T5ForQuestionAnswering
的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, T5ForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = T5ForQuestionAnswering.from_pretrained("google-t5/t5-small")
>>> 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)
...
TFT5Model
class transformers.TFT5Model
< source >( config *inputs **kwargs )
引數
- config (T5Config) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型相關的權重,只加載配置。請查閱 from_pretrained() 方法來載入模型權重。
不帶任何特定頭部輸出原始隱藏狀態的裸 T5 模型轉換器。
T5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在 《探索遷移學習的極限與統一的文字到文字轉換器》 中提出。它是一個編碼器-解碼器轉換器,在文字到文字去噪生成設定中進行預訓練。
此模型繼承自 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 函式一樣傳遞輸入!
呼叫
< source >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None decoder_input_ids: np.ndarray | tf.Tensor | None = None decoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None decoder_head_mask: np.ndarray | tf.Tensor | None = None encoder_outputs: np.ndarray | tf.Tensor | None = None past_key_values: Optional[tuple[tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None decoder_inputs_embeds: np.ndarray | tf.Tensor | None = 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.TFSeq2SeqModelOutput 或 tuple(tf.Tensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的tf.Tensor
) — 詞彙表中輸入序列標記的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在右側或左側填充輸入。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
要了解有關如何準備用於預訓練的
inputs
,請參閱 T5 訓練。 - decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的tf.Tensor
, 可選) — 用於序列到序列訓練。T5 使用pad_token_id
作為decoder_input_ids
生成的起始標記。如果使用past_key_values
,則可以選擇僅輸入最後一個decoder_input_ids
(那些沒有將過去的鍵值狀態提供給此模型的)的形狀為(batch_size, 1)
,而不是所有decoder_input_ids
的形狀為(batch_size, sequence_length)
。要了解有關如何準備用於預訓練的
decoder_input_ids
,請參閱 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示標記未被掩碼,
- 0 表示標記被掩碼.
- decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的tf.Tensor
, 可選) — 預設行為:生成一個忽略decoder_input_ids
中填充標記的張量。因果掩碼也將預設使用。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
, 可選) — 用於將編碼器中自注意力模組的選定頭部置零的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼.
- decoder_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
, 可選) — 用於將解碼器中自注意力模組的選定頭部置零的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼.
- encoder_outputs (
tuple(tuple(tf.FloatTensor)
, 可選) — 元組包括 (last_hidden_state
,可選
: hidden_states,可選
: attentions)。形狀為(batch_size, sequence_length, hidden_size)
的last_hidden_state
是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - past_key_values (
tuple(tuple(tf.Tensor))
,長度為config.n_layers
,每個元組包含 4 個形狀為(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的張量) — 包含注意力塊的預計算鍵值隱藏狀態。可用於加速解碼。如果使用
past_key_values
,使用者可以選擇只輸入最後一個decoder_input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的)的形狀為(batch_size, 1)
,而不是所有decoder_input_ids
的形狀為(batch_size, sequence_length)
。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您想比模型的內部嵌入查詢矩陣更好地控制如何將input_ids
索引轉換為關聯向量,則此功能很有用。 - decoder_inputs_embeds (形狀為
(batch_size, target_sequence_length, hidden_size)
的tf.Tensor
, 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞decoder_input_ids
。如果使用past_key_values
,則可以選擇僅輸入最後一個decoder_inputs_embeds
(那些沒有將其過去的鍵值狀態提供給此模型的)(請參閱past_key_values
)。如果您想比模型的內部嵌入查詢矩陣更好地控制如何將decoder_input_ids
索引轉換為關聯向量,則此功能很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,則decoder_inputs_embeds
取inputs_embeds
的值。 - use_cache (
bool
, 可選, 預設為True
) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(請參閱past_key_values
)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。此引數只能在 eager 模式下使用,在 graph 模式下將使用 config 中的值。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。此引數只能在 eager 模式下使用,在 graph 模式下將使用 config 中的值。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通的元組。此引數可在 eager 模式下使用,在 graph 模式下該值將始終設定為 True。 - training (
bool
, 可選, 預設為False
) — 是否在訓練模式下使用模型(某些模組,如 dropout 模組,在訓練和評估之間具有不同的行為)。
返回
transformers.modeling_tf_outputs.TFSeq2SeqModelOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFSeq2SeqModelOutput 或一個 tf.Tensor
元組 (如果傳入 return_dict=False
或 config.return_dict=False
時),包含根據配置 (T5Config) 和輸入的不同元素。
-
last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
) — 模型解碼器最後一層輸出的隱藏狀態序列。如果使用
past_key_values
,則僅輸出形狀為(batch_size, 1, hidden_size)
的序列的最後一個隱藏狀態。 -
past_key_values (
list[tf.Tensor]
, 可選, 當傳入use_cache=True
或config.use_cache=True
時返回) — 長度為config.n_layers
的tf.Tensor
列表,每個張量形狀為(2, batch_size, num_heads, sequence_length, embed_size_per_head)
)。包含解碼器注意力塊的預計算隱藏狀態(鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
TFT5Model 的前向方法,覆蓋 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, TFT5Model
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = TFT5Model.from_pretrained("google-t5/t5-small")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="tf"
... ).input_ids # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="tf").input_ids # Batch size 1
>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for T5Model.
>>> # This is not needed for torch's T5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)
>>> # forward pass
>>> outputs = model(input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
TFT5ForConditionalGeneration
類 transformers.TFT5ForConditionalGeneration
< 來源 >( config *inputs **kwargs )
引數
- config (T5Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
頂部帶有 `language modeling` 頭的 T5 模型。
T5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在 《探索遷移學習的極限與統一的文字到文字轉換器》 中提出。它是一個編碼器-解碼器轉換器,在文字到文字去噪生成設定中進行預訓練。
此模型繼承自 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 decoder_input_ids: np.ndarray | tf.Tensor | None = None decoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None decoder_head_mask: np.ndarray | tf.Tensor | None = None encoder_outputs: np.ndarray | tf.Tensor | None = None past_key_values: Optional[tuple[tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None decoder_inputs_embeds: np.ndarray | tf.Tensor | None = None labels: np.ndarray | tf.Tensor | None = 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.TFSeq2SeqLMOutput 或 tuple(tf.Tensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的tf.Tensor
) — 詞彙表中輸入序列標記的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在右側或左側填充輸入。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
要了解如何準備用於預訓練的
inputs
,請參閱 T5 訓練。 - decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的tf.Tensor
, 可選) — 用於序列到序列訓練。T5 使用pad_token_id
作為decoder_input_ids
生成的起始標記。如果使用past_key_values
,則可以選擇僅輸入最後一個decoder_input_ids
(那些沒有將過去的鍵值狀態提供給此模型的)的形狀為(batch_size, 1)
,而不是所有decoder_input_ids
的形狀為(batch_size, sequence_length)
。要了解如何準備用於預訓練的
decoder_input_ids
,請參閱 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示標記未被掩碼,
- 0 表示標記被掩碼.
- decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的tf.Tensor
, 可選) — 預設行為:生成一個忽略decoder_input_ids
中填充標記的張量。因果掩碼也將預設使用。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
, 可選) — 用於將編碼器中自注意力模組的選定頭部置零的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼.
- decoder_head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
, 可選) — 用於將解碼器中自注意力模組的選定頭部置零的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼.
- encoder_outputs (
tuple(tuple(tf.FloatTensor)
, 可選) — 元組包括 (last_hidden_state
,可選
: hidden_states,可選
: attentions)。形狀為(batch_size, sequence_length, hidden_size)
的last_hidden_state
是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - past_key_values (
tuple(tuple(tf.Tensor))
,長度為config.n_layers
,每個元組包含 4 個形狀為(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的張量) — 包含注意力塊的預計算鍵值隱藏狀態。可用於加速解碼。如果使用
past_key_values
,使用者可以選擇只輸入最後一個decoder_input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的)的形狀為(batch_size, 1)
,而不是所有decoder_input_ids
的形狀為(batch_size, sequence_length)
。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您想比模型的內部嵌入查詢矩陣更好地控制如何將input_ids
索引轉換為關聯向量,則此功能很有用。 - decoder_inputs_embeds (形狀為
(batch_size, target_sequence_length, hidden_size)
的tf.Tensor
, 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞decoder_input_ids
。如果使用past_key_values
,則可以選擇僅輸入最後一個decoder_inputs_embeds
(那些沒有將其過去的鍵值狀態提供給此模型的)(請參閱past_key_values
)。如果您想比模型的內部嵌入查詢矩陣更好地控制如何將decoder_input_ids
索引轉換為關聯向量,則此功能很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,則decoder_inputs_embeds
取inputs_embeds
的值。 - use_cache (
bool
, 可選, 預設為True
) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(請參閱past_key_values
)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。此引數只能在 eager 模式下使用,在 graph 模式下將使用 config 中的值。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。此引數只能在 eager 模式下使用,在 graph 模式下將使用 config 中的值。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通的元組。此引數可在 eager 模式下使用,在 graph 模式下該值將始終設定為 True。 - training (
bool
, 可選, 預設為False
) — 是否在訓練模式下使用模型(某些模組,如 dropout 模組,在訓練和評估之間具有不同的行為)。 - labels (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 用於計算交叉熵分類損失的標籤。索引應在[0, ..., config.vocab_size - 1]
範圍內。
返回
transformers.modeling_tf_outputs.TFSeq2SeqLMOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFSeq2SeqLMOutput 或一個 tf.Tensor
元組 (如果傳入 return_dict=False
或 config.return_dict=False
時),包含根據配置 (T5Config) 和輸入的不同元素。
-
loss (形狀為
(n,)
的tf.Tensor
, 可選, 其中 n 是非掩碼標籤的數量,當提供labels
時返回) — 語言建模損失。 -
logits (
tf.Tensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 語言模型頭部的預測分數(SoftMax 之前每個詞彙標記的分數)。 -
past_key_values (
list[tf.Tensor]
, 可選, 當傳入use_cache=True
或config.use_cache=True
時返回) — 長度為config.n_layers
的tf.Tensor
列表,每個張量形狀為(2, batch_size, num_heads, sequence_length, embed_size_per_head)
)。包含解碼器注意力塊的預計算隱藏狀態(鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —tf.Tensor
元組(一個用於嵌入輸出 + 一個用於每層輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
TFT5ForConditionalGeneration 的前向方法,覆蓋 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, TFT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = TFT5ForConditionalGeneration.from_pretrained("google-t5/t5-small")
>>> # training
>>> inputs = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="tf").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="tf").input_ids
>>> outputs = model(inputs, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits
>>> # inference
>>> inputs = tokenizer(
... "summarize: studies have shown that owning a dog is good for you", return_tensors="tf"
... ).input_ids # Batch size 1
>>> outputs = model.generate(inputs)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
>>> # studies have shown that owning a dog is good for you
TFT5EncoderModel
類 transformers.TFT5EncoderModel
< 來源 >( config *inputs **kwargs )
引數
- config (T5Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
裸 T5 模型,輸出編碼器的原始隱藏狀態,不帶任何特定頭部。
T5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在 《探索遷移學習的極限與統一的文字到文字轉換器》 中提出。它是一個編碼器-解碼器轉換器,在文字到文字去噪生成設定中進行預訓練。
此模型繼承自 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 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 training: Optional[bool] = False ) → transformers.modeling_tf_outputs.TFBaseModelOutput 或 tuple(tf.Tensor)
引數
- inputs (形狀為
(batch_size, sequence_length)
的tf.Tensor
) — 詞彙表中輸入序列標記的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在右側或左側填充輸入。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
要了解如何準備用於預訓練的
inputs
,請參閱 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示標記未被掩碼,
- 0 表示標記被掩碼.
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您想比模型的內部嵌入查詢矩陣更好地控制如何將input_ids
索引轉換為關聯向量,則此功能很有用。 - head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。更多詳情請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。更多詳情請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。 - training (
bool
,可選,預設為False
) — 是否在訓練模式下使用模型(某些模組,如 Dropout 模組在訓練和評估之間的行為不同)。
返回
transformers.modeling_tf_outputs.TFBaseModelOutput 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFBaseModelOutput 或 tf.Tensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),根據配置 (T5Config) 和輸入包含各種元素。
-
last_hidden_state (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最後一層輸出的隱藏狀態序列。 -
hidden_states (
tuple(tf.FloatTensor)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於嵌入層輸出 + 每個層的輸出)。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
TFT5EncoderModel 的 forward 方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, TFT5EncoderModel
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = TFT5EncoderModel.from_pretrained("google-t5/t5-small")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="tf"
... ).input_ids # Batch size 1
>>> outputs = model(input_ids)
FlaxT5Model
class transformers.FlaxT5Model
< source >( config: T5Config input_shape: tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
__call__
< source >( input_ids: Array attention_mask: typing.Optional[jax.Array] = None decoder_input_ids: Array = None decoder_attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput or tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的jnp.ndarray
) — 詞彙表中輸入序列 token 的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在右側和左側都填充輸入。索引可以使用 AutoTokenizer 獲取。更多詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的jnp.ndarray
,可選) — 避免對填充 token 索引執行注意力的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示 token 未被遮蔽,
- 0 表示 token 被遮蔽。
- decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的jnp.ndarray
,可選) — 詞彙表中解碼器輸入序列 token 的索引。索引可以使用 AutoTokenizer 獲取。更多詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
T5 使用
pad_token_id
作為decoder_input_ids
生成的起始 token。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(那些沒有將過去的鍵值狀態提供給此模型的)形狀為(batch_size, 1)
而不是所有decoder_input_ids
形狀為(batch_size, sequence_length)
。要了解如何為預訓練準備
decoder_input_ids
,請檢視 T5 訓練。 - decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的jnp.ndarray
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充 token 的張量。預設情況下也將使用因果掩碼。 - encoder_outputs (
tuple(tuple(jnp.ndarray)
,可選) — 元組包含 (last_hidden_state
,optional
: hidden_states,optional
: attentions)。形狀為(batch_size, sequence_length, hidden_size)
的last_hidden_state
是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中使用。 - past_key_values (長度為
config.n_layers
的tuple(tuple(jnp.ndarray))
,每個元組包含 4 個形狀為(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的張量) — 包含注意力塊的預計算鍵和值隱藏狀態。可用於加速解碼。如果使用
past_key_values
,使用者可以選擇只輸入最後一個decoder_input_ids
(那些沒有將過去的鍵值狀態提供給此模型的),形狀為(batch_size, 1)
,而不是所有decoder_input_ids
形狀為(batch_size, sequence_length)
。
返回
transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或 torch.FloatTensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),根據配置 (T5Config) 和輸入包含各種元素。
-
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
) — 語言建模頭的預測分數(SoftMax 之前每個詞彙 token 的分數)。 -
past_key_values (
tuple(tuple(jnp.ndarray))
,可選,當傳入use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tuple(jnp.ndarray)
元組,每個元組包含 2 個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量和 2 個形狀為(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的額外張量。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
FlaxT5PreTrainedModel
的 forward 方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, FlaxT5Model
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = FlaxT5Model.from_pretrained("google-t5/t5-small")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="np"
... ).input_ids
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="np").input_ids
>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for T5Model.
>>> # This is not needed for torch's T5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)
>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
編碼
< source >( input_ids: Array attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的jnp.ndarray
) — 詞彙表中輸入序列 token 的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在右側和左側都填充輸入。索引可以使用 AutoTokenizer 獲取。更多詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的jnp.ndarray
,可選) — 避免對填充 token 索引執行注意力的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示 token 未被遮蔽,
- 0 表示 token 被遮蔽。
- output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。更多詳情請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。更多詳情請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 torch.FloatTensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),根據配置 (<class 'transformers.models.t5.configuration_t5.T5Config'>
) 和輸入包含各種元素。
-
last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
) — 模型最後一層輸出的隱藏狀態序列。 -
hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
示例
>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("google-t5/t5-small")
>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
解碼
< source >( decoder_input_ids encoder_outputs encoder_attention_mask: typing.Optional[jax.Array] = None decoder_attention_mask: typing.Optional[jax.Array] = None past_key_values: typing.Optional[dict] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或 tuple(torch.FloatTensor)
引數
- decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的jnp.ndarray
) — 詞彙表中解碼器輸入序列 token 的索引。索引可以使用 AutoTokenizer 獲取。更多詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
對於訓練,應提供
decoder_input_ids
。 - encoder_outputs (
tuple(tuple(jnp.ndarray)
) — 元組包含 (last_hidden_state
, 可選:hidden_states
, 可選:attentions
)。形狀為(batch_size, sequence_length, hidden_size)
的last_hidden_state
,可選) 是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中使用。 - encoder_attention_mask (形狀為
(batch_size, sequence_length)
的jnp.ndarray
,可選) — 避免對填充 token 索引執行注意力的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示 token 未被遮蔽,
- 0 表示 token 被遮蔽。
- decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的jnp.ndarray
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充 token 的張量。預設情況下也將使用因果掩碼。如果您想改變填充行為,您應該根據您的需要進行修改。有關預設策略的更多資訊,請參閱論文中的圖 1。
- past_key_values (
Dict[str, np.ndarray]
,可選,由init_cache
返回或當傳遞之前的past_key_values
時返回) — 預計算隱藏狀態(注意力塊中的鍵和值)的字典,可用於快速自迴歸解碼。預計算的鍵和值隱藏狀態的形狀為 [batch_size, max_length]。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。更多詳情請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。更多詳情請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或 torch.FloatTensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),根據配置 (<class 'transformers.models.t5.configuration_t5.T5Config'>
) 和輸入包含各種元素。
-
last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
) — 模型最後一層輸出的隱藏狀態序列。如果使用
past_key_values
,則僅輸出形狀為(batch_size, 1, hidden_size)
的序列的最後一個隱藏狀態。 -
past_key_values (
tuple(tuple(jnp.ndarray))
,可選,當傳入use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tuple(jnp.ndarray)
元組,每個元組包含 2 個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量,如果config.is_encoder_decoder=True
則可選地包含 2 個形狀為(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的額外張量。包含預計算的隱藏狀態(自注意力塊中的鍵和值,如果
config.is_encoder_decoder=True
則可選地在交叉注意力塊中),可用於(參見past_key_values
輸入)加速序列解碼。 -
hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
且config.add_cross_attention=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
示例
>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration
>>> import jax.numpy as jnp
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("google-t5/t5-small")
>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id
>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits
FlaxT5ForConditionalGeneration
class transformers.FlaxT5ForConditionalGeneration
< source >( config: T5Config input_shape: tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
__call__
< source >( input_ids: Array attention_mask: typing.Optional[jax.Array] = None decoder_input_ids: Array = None decoder_attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput or tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的jnp.ndarray
) — 詞彙表中輸入序列 token 的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在右側和左側都填充輸入。索引可以使用 AutoTokenizer 獲取。更多詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (形狀為
(batch_size, sequence_length)
的jnp.ndarray
,可選) — 避免對填充 token 索引執行注意力的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示 token 未被遮蔽,
- 0 表示 token 被遮蔽。
- decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的jnp.ndarray
,可選) — 詞彙表中解碼器輸入序列 token 的索引。索引可以使用 AutoTokenizer 獲取。更多詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
T5 使用
pad_token_id
作為decoder_input_ids
生成的起始 token。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(那些沒有將過去的鍵值狀態提供給此模型的)形狀為(batch_size, 1)
而不是所有decoder_input_ids
形狀為(batch_size, sequence_length)
。要了解如何為預訓練準備
decoder_input_ids
,請檢視 T5 訓練。 - decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的jnp.ndarray
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充 token 的張量。預設情況下也將使用因果掩碼。 - encoder_outputs (
tuple(tuple(jnp.ndarray)
,可選) — 元組包含 (last_hidden_state
,optional
: hidden_states,optional
: attentions)。形狀為(batch_size, sequence_length, hidden_size)
的last_hidden_state
是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中使用。 - past_key_values (長度為
config.n_layers
的tuple(tuple(jnp.ndarray))
,每個元組包含 4 個形狀為(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的張量) — 包含注意力塊的預計算鍵和值隱藏狀態。可用於加速解碼。如果使用
past_key_values
,使用者可以選擇只輸入最後一個decoder_input_ids
(那些沒有將過去的鍵值狀態提供給此模型的)形狀為(batch_size, 1)
,而不是所有decoder_input_ids
形狀為(batch_size, sequence_length)
。
返回
transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或 torch.FloatTensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),根據配置 (T5Config) 和輸入包含各種元素。
-
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
) — 語言建模頭的預測分數(SoftMax 之前每個詞彙 token 的分數)。 -
past_key_values (
tuple(tuple(jnp.ndarray))
,可選,當傳入use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tuple(jnp.ndarray)
元組,每個元組包含 2 個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量和 2 個形狀為(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的額外張量。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
FlaxT5PreTrainedModel
的 forward 方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("google-t5/t5-small")
>>> ARTICLE_TO_SUMMARIZE = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer([ARTICLE_TO_SUMMARIZE], return_tensors="np")
>>> # Generate Summary
>>> summary_ids = model.generate(inputs["input_ids"]).sequences
>>> print(tokenizer.decode(summary_ids[0], skip_special_tokens=True, clean_up_tokenization_spaces=False))
編碼
< source >( input_ids: Array attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的jnp.ndarray
) — 詞彙表中輸入序列 token 的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在右側和左側都填充輸入。索引可以使用 AutoTokenizer 獲取。更多詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解如何為預訓練準備
input_ids
,請檢視 T5 訓練。 - attention_mask (
jnp.ndarray
,形狀為(batch_size, sequence_length)
,可選) — 用於避免對填充標記索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示**未被掩碼**的標記,
- 0 表示**被掩碼**的標記。
- output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量中的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量中的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通的元組。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或 torch.FloatTensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),根據配置 (<class 'transformers.models.t5.configuration_t5.T5Config'>
) 和輸入包含各種元素。
-
last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的jnp.ndarray
) — 模型最後一層輸出的隱藏狀態序列。 -
hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
示例
>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("google-t5/t5-small")
>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
解碼
< source >( decoder_input_ids encoder_outputs encoder_attention_mask: typing.Optional[jax.Array] = None decoder_attention_mask: typing.Optional[jax.Array] = None past_key_values: typing.Optional[dict] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
引數
- decoder_input_ids (
jnp.ndarray
,形狀為(batch_size, target_sequence_length)
) — 解碼器輸入序列標記在詞彙表中的索引。索引可以使用 AutoTokenizer 獲得。詳細資訊請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
對於訓練,應提供
decoder_input_ids
。 - encoder_outputs (
tuple(tuple(jnp.ndarray)
) — 元組包含 (last_hidden_state
, 可選:hidden_states
, 可選:attentions
)last_hidden_state
形狀為(batch_size, sequence_length, hidden_size)
,可選) 是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中會使用到。 - encoder_attention_mask (
jnp.ndarray
,形狀為(batch_size, sequence_length)
,可選) — 用於避免對填充標記索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示**未被掩碼**的標記,
- 0 表示**被掩碼**的標記。
- decoder_attention_mask (
jnp.ndarray
,形狀為(batch_size, target_sequence_length)
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充標記的張量。預設情況下也會使用因果掩碼。如果您想更改填充行為,應根據您的需要進行修改。有關預設策略的更多資訊,請參閱 論文 中的圖 1。
- past_key_values (
Dict[str, np.ndarray]
, 可選,由init_cache
或傳遞先前的past_key_values
時返回) — 預先計算的隱藏狀態字典(注意力塊中的鍵和值),可用於快速自迴歸解碼。預先計算的鍵和值隱藏狀態的形狀為 [batch_size, max_length]。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量中的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量中的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通的元組。
返回
transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 物件或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或 config.return_dict=False
),包含根據配置(<class 'transformers.models.t5.configuration_t5.T5Config'>
)和輸入而定的各種元素。
-
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
) — 語言建模頭的預測分數(SoftMax 之前每個詞彙 token 的分數)。 -
hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元組(一個用於嵌入層輸出 + 每個層的輸出)。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元組(每個層一個)。注意力 softmax 後的交叉注意力權重,用於計算交叉注意力頭中的加權平均值。
-
past_key_values (
tuple(tuple(jnp.ndarray))
, 可選, 當傳遞use_cache=True
或config.use_cache=True
時返回) — 長度為config.n_layers
的jnp.ndarray
元組,每個元組包含自注意力和交叉注意力層的快取鍵和值狀態(如果模型在編碼器-解碼器設定中使用)。僅當config.is_decoder = True
時相關。包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(請參閱
past_key_values
輸入)加速順序解碼。
示例
>>> from transformers import AutoTokenizer, FlaxT5ForConditionalGeneration
>>> import jax.numpy as jnp
>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
>>> model = FlaxT5ForConditionalGeneration.from_pretrained("google-t5/t5-small")
>>> text = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id
>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits
FlaxT5EncoderModel
class transformers.FlaxT5EncoderModel
< source >( config: T5Config input_shape: tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
__call__
< source >( input_ids: Array attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None )
引數
- input_ids (
jnp.ndarray
,形狀為(batch_size, sequence_length)
) — 輸入序列標記在詞彙表中的索引。T5 是一個帶有相對位置嵌入的模型,因此您應該能夠在左右兩邊填充輸入。索引可以使用 AutoTokenizer 獲得。詳細資訊請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
要了解有關如何為預訓練準備
input_ids
的更多資訊,請檢視 T5 訓練。 - attention_mask (
jnp.ndarray
,形狀為(batch_size, sequence_length)
,可選) — 用於避免對填充標記索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示**未被掩碼**的標記,
- 0 表示**被掩碼**的標記。
- output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量中的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量中的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通的元組。
FlaxT5EncoderModel 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的配方需要在此函式中定義,但之後應呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。