Transformers 文件
LXMERT
並獲得增強的文件體驗
開始使用
LXMERT
概述
LXMERT 模型由 Hao Tan 和 Mohit Bansal 在 LXMERT: Learning Cross-Modality Encoder Representations from Transformers 中提出。它是一系列雙向 Transformer 編碼器(一個用於視覺模態,一個用於語言模態,然後一個用於融合兩種模態),透過結合掩碼語言建模、視覺-語言文字對齊、ROI 特徵迴歸、掩碼視覺屬性建模、掩碼視覺物件建模和視覺問答目標進行預訓練。預訓練包括多個多模態資料集:MSCOCO、Visual-Genome + Visual-Genome 問答、VQA 2.0 和 GQA。
論文摘要如下:
視覺與語言推理需要理解視覺概念、語言語義,最重要的是,這兩種模態之間的對齊和關係。因此,我們提出了 LXMERT(Learning Cross-Modality Encoder Representations from Transformers)框架來學習這些視覺與語言的連線。在 LXMERT 中,我們構建了一個大型 Transformer 模型,它包含三個編碼器:一個物件關係編碼器、一個語言編碼器和一個跨模態編碼器。接下來,為了使我們的模型能夠連線視覺和語言語義,我們透過五種多樣化的代表性預訓練任務,使用大量的影像-句子對對模型進行預訓練:掩碼語言建模、掩碼物件預測(特徵迴歸和標籤分類)、跨模態匹配和影像問答。這些任務有助於學習模態內和跨模態關係。在從我們的預訓練引數進行微調後,我們的模型在兩個視覺問答資料集(即 VQA 和 GQA)上取得了最先進的結果。我們還展示了我們的預訓練跨模態模型透過將其適應到具有挑戰性的視覺推理任務 NLVR 的泛化能力,並將之前的最佳結果提高了 22% 絕對值(從 54% 到 76%)。最後,我們詳細展示了消融研究,以證明我們新穎的模型元件和預訓練策略都對我們強大的結果做出了重大貢獻;並展示了不同編碼器的一些注意力視覺化。
此模型由 eltoto1219 貢獻。原始程式碼可在此處找到。
使用技巧
- 視覺特徵嵌入中無需使用邊界框,任何型別的視覺空間特徵都適用。
- LXMERT 輸出的語言隱藏狀態和視覺隱藏狀態都經過跨模態層,因此它們包含來自兩種模態的資訊。要訪問僅關注自身的模態,請從元組的第一個輸入中選擇視覺/語言隱藏狀態。
- 雙向跨模態編碼器注意力僅在語言模態用作輸入且視覺模態用作上下文向量時才返回注意力值。此外,雖然跨模態編碼器包含各自模態的自注意力和交叉注意力,但僅返回交叉注意力,而兩個自注意力輸出都被忽略。
資源
LxmertConfig
class transformers.LxmertConfig
< 來源 >( vocab_size = 30522 hidden_size = 768 num_attention_heads = 12 num_qa_labels = 9500 num_object_labels = 1600 num_attr_labels = 400 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 l_layers = 9 x_layers = 5 r_layers = 5 visual_feat_dim = 2048 visual_pos_dim = 4 visual_loss_normalizer = 6.67 task_matched = True task_mask_lm = True task_obj_predict = True task_qa = True visual_obj_loss = True visual_attr_loss = True visual_feat_loss = True **kwargs )
引數
- vocab_size (
int
, 可選, 預設為 30522) — LXMERT 詞彙表大小。定義了呼叫 LxmertModel 或 TFLxmertModel 時傳入的inputs_ids
可以表示的不同標記的數量。 - hidden_size (
int
, 可選, 預設為 768) — 編碼器層和池化層的維度。 - num_attention_heads (
int
, 可選, 預設為 12) — Transformer 編碼器中每個注意力層的注意力頭數量。 - num_qa_labels (
int
, 可選, 預設為 9500) — 這表示共有不同問答 (QA) 標籤的總數。如果使用多個帶有 QA 的資料集,使用者需要考慮所有資料集擁有的標籤總數。 - num_object_labels (
int
, 可選, 預設為 1600) — 這表示 lxmert 將能夠分類的語義上唯一的物件總數,作為池化物件特徵的歸屬。 - num_attr_labels (
int
, 可選, 預設為 400) — 這表示 lxmert 將能夠分類為擁有的語義上唯一的屬性總數,作為池化物件特徵的歸屬。 - intermediate_size (
int
, 可選, 預設為 3072) — Transformer 編碼器中“中間”(通常稱為前饋)層的維度。 - hidden_act (
str
或Callable
, 可選, 預設為"gelu"
) — 編碼器和池化器中的非線性啟用函式(函式或字串)。如果是字串,支援"gelu"
、"relu"
、"silu"
和"gelu_new"
。 - hidden_dropout_prob (
float
, 可選, 預設為 0.1) — 嵌入、編碼器和池化器中所有全連線層的 dropout 機率。 - attention_probs_dropout_prob (
float
, 可選, 預設為 0.1) — 注意力機率的 dropout 比率。 - max_position_embeddings (
int
, 可選, 預設為 512) — 此模型可能使用的最大序列長度。通常為了以防萬一會將其設定為一個較大的值(例如 512 或 1024 或 2048)。 - type_vocab_size (
int
, 可選, 預設為 2) — 傳入 BertModel 的 token_type_ids 的詞彙表大小。 - initializer_range (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態初始化器的標準差。 - layer_norm_eps (
float
, 可選, 預設為 1e-12) — 層歸一化層使用的 epsilon 值。 - l_layers (
int
, 可選, 預設為 9) — Transformer 語言編碼器中的隱藏層數。 - x_layers (
int
, 可選, 預設為 5) — Transformer 跨模態編碼器中的隱藏層數。 - r_layers (
int
, 可選, 預設為 5) — Transformer 視覺編碼器中的隱藏層數。 - visual_feat_dim (
int
, 可選, 預設為 2048) — 這表示用作模型輸入的池化物件特徵的最後一個維度,表示每個物件特徵本身的大小。 - visual_pos_dim (
int
, 可選, 預設為 4) — 這表示混入視覺特徵中的空間特徵的數量。預設設定為 4,因為這通常表示邊界框的位置,即 (x, y, 寬度, 高度)。 - visual_loss_normalizer (
float
, 可選, 預設為 6.67) — 這表示如果預訓練期間決定使用多個基於視覺的損失目標進行訓練,則每個視覺損失所乘的縮放因子。 - task_matched (
bool
, 可選, 預設為True
) — 此任務用於句子-影像匹配。如果句子正確描述了影像,則標籤為 1。如果句子未正確描述影像,則標籤為 0。 - task_mask_lm (
bool
, 可選, 預設為True
) — 是否將掩碼語言建模(如 BERT 等預訓練模型中使用的)新增到損失目標。 - task_obj_predict (
bool
, 可選, 預設為True
) — 是否將物件預測、屬性預測和特徵迴歸新增到損失目標。 - task_qa (
bool
, 可選, 預設為True
) — 是否將問答損失新增到目標函式中。 - visual_obj_loss (
bool
, 可選, 預設為True
) — 是否計算物件預測損失目標。 - visual_attr_loss (
bool
, 可選, 預設為True
) — 是否計算屬性預測損失目標。 - visual_feat_loss (
bool
, 可選, 預設為True
) — 是否計算特徵迴歸損失目標。
這是配置類,用於儲存 LxmertModel 或 TFLxmertModel 的配置。它用於根據指定引數例項化 LXMERT 模型,定義模型架構。使用預設值例項化配置將生成與 Lxmert unc-nlp/lxmert-base-uncased 架構類似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱 PretrainedConfig 的文件。
LxmertTokenizer
class transformers.LxmertTokenizer
< 來源 >( vocab_file do_lower_case = True do_basic_tokenize = True never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None clean_up_tokenization_spaces = True **kwargs )
引數
- vocab_file (
str
) — 包含詞彙的檔案。 - do_lower_case (
bool
, 可選, 預設為True
) — 分詞時是否將輸入轉換為小寫。 - do_basic_tokenize (
bool
, 可選, 預設為True
) — 在WordPiece之前是否進行基本分詞。 - never_split (
Iterable
, 可選) — 永遠不會在分詞期間拆分的標記集合。僅在do_basic_tokenize=True
時有效。 - unk_token (
str
, 可選, 預設為"[UNK]"
) — 未知標記。不在詞彙表中的標記不能轉換為 ID,而是設定為此標記。 - sep_token (
str
, 可選, 預設為"[SEP]"
) — 分隔符標記,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - pad_token (
str
, 可選, 預設為"[PAD]"
) — 用於填充的標記,例如在對不同長度的序列進行批處理時。 - cls_token (
str
, 可選, 預設為"[CLS]"
) — 分類器標記,用於進行序列分類(對整個序列進行分類而非按標記分類)時使用。當使用特殊標記構建序列時,它是序列的第一個標記。 - mask_token (
str
, 可選, 預設為"[MASK]"
) — 用於掩碼值的標記。在使用掩碼語言建模訓練此模型時使用此標記。這是模型將嘗試預測的標記。 - tokenize_chinese_chars (
bool
, 可選, 預設為True
) — 是否對中文字元進行分詞。對於日語應停用此功能(參見此問題)。
- strip_accents (
bool
, 可選) — 是否去除所有重音。如果未指定此選項,則將由lowercase
的值決定(與原始 Lxmert 中相同)。 - clean_up_tokenization_spaces (
bool
, 可選, 預設為True
) — 解碼後是否清理空格,清理包括移除額外的空格等潛在的“人工痕跡”。
構建 Lxmert 分詞器。基於 WordPiece。
此分詞器繼承自 PreTrainedTokenizer,其中包含大部分主要方法。使用者應查閱此超類以獲取有關這些方法的更多資訊。
build_inputs_with_special_tokens
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → List[int]
透過連線和新增特殊標記,為序列分類任務從一個序列或一對序列構建模型輸入。Lxmert 序列具有以下格式
- 單個序列:
[CLS] X [SEP]
- 序列對:
[CLS] A [SEP] B [SEP]
將標記序列(字串)轉換為單個字串。
get_special_tokens_mask
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) → List[int]
從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model
方法新增特殊標記時呼叫。
LxmertTokenizerFast
class transformers.LxmertTokenizerFast
< 源 >( vocab_file = None tokenizer_file = None do_lower_case = True unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )
引數
- vocab_file (
str
) — 包含詞彙的檔案。 - do_lower_case (
bool
, 可選, 預設為True
) — 分詞時是否將輸入轉換為小寫。 - unk_token (
str
, 可選, 預設為"[UNK]"
) — 未知標記。不在詞彙表中的標記不能轉換為 ID,而是設定為此標記。 - sep_token (
str
, 可選, 預設為"[SEP]"
) — 分隔符標記,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - pad_token (
str
, 可選, 預設為"[PAD]"
) — 用於填充的標記,例如在對不同長度的序列進行批處理時。 - cls_token (
str
, 可選, 預設為"[CLS]"
) — 分類器標記,用於進行序列分類(對整個序列進行分類而非按標記分類)時使用。當使用特殊標記構建序列時,它是序列的第一個標記。 - mask_token (
str
, 可選, 預設為"[MASK]"
) — 用於掩碼值的標記。在使用掩碼語言建模訓練此模型時使用此標記。這是模型將嘗試預測的標記。 - clean_text (
bool
, 可選, 預設為True
) — 在分詞前是否清理文字,透過移除任何控制字元並將所有空格替換為經典空格。 - tokenize_chinese_chars (
bool
, 可選, 預設為True
) — 是否對中文字元進行分詞。對於日語應停用此功能(參見此問題)。 - strip_accents (
bool
, 可選) — 是否去除所有重音。如果未指定此選項,則將由lowercase
的值決定(與原始 Lxmert 中相同)。 - wordpieces_prefix (
str
, 可選, 預設為"##"
) — 子詞的字首。
構建一個“快速”Lxmert 分詞器(由 HuggingFace 的 tokenizers 庫支援)。基於 WordPiece。
此分詞器繼承自 PreTrainedTokenizerFast,其中包含大部分主要方法。使用者應查閱此超類以獲取有關這些方法的更多資訊。
Lxmert 特定的輸出
class transformers.models.lxmert.modeling_lxmert.LxmertModelOutput
< 源 >( language_output: typing.Optional[torch.FloatTensor] = None vision_output: typing.Optional[torch.FloatTensor] = None pooled_output: typing.Optional[torch.FloatTensor] = None language_hidden_states: typing.Optional[tuple[torch.FloatTensor]] = None vision_hidden_states: typing.Optional[tuple[torch.FloatTensor]] = None language_attentions: typing.Optional[tuple[torch.FloatTensor]] = None vision_attentions: typing.Optional[tuple[torch.FloatTensor]] = None cross_encoder_attentions: typing.Optional[tuple[torch.FloatTensor]] = None )
引數
- language_output (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
) — 語言編碼器最後一層輸出的隱藏狀態序列。 - vision_output (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
) — 視覺編碼器最後一層輸出的隱藏狀態序列。 - pooled_output (形狀為
(batch_size, hidden_size)
的torch.FloatTensor
) — 序列第一個標記(分類、CLS、標記)的最後一層隱藏狀態,經過線性層和 Tanh 啟用函式進一步處理。 - language_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。 - vision_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。 - cross_encoder_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
Lxmert 的輸出,包含語言、視覺和跨模態編碼器的最後隱藏狀態、池化輸出和注意力機率。(注意:Lxmert 中的視覺編碼器被稱為“關係”編碼器)
class transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput
< 源 >( loss: typing.Optional[torch.FloatTensor] = None prediction_logits: typing.Optional[torch.FloatTensor] = None cross_relationship_score: typing.Optional[torch.FloatTensor] = None question_answering_score: typing.Optional[torch.FloatTensor] = None language_hidden_states: typing.Optional[tuple[torch.FloatTensor]] = None vision_hidden_states: typing.Optional[tuple[torch.FloatTensor]] = None language_attentions: typing.Optional[tuple[torch.FloatTensor]] = None vision_attentions: typing.Optional[tuple[torch.FloatTensor]] = None cross_encoder_attentions: typing.Optional[tuple[torch.FloatTensor]] = None )
引數
- loss (
*可選*
, 當提供labels
時返回, 形狀為(1,)
的torch.FloatTensor
) — 總損失,是掩碼語言建模損失和下一個序列預測(分類)損失的總和。 - prediction_logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭的預測分數(SoftMax 之前的每個詞彙標記的分數)。 - cross_relationship_score (形狀為
(batch_size, 2)
的torch.FloatTensor
) — 文字匹配目標(分類)頭的預測分數(SoftMax 之前的 True/False 延續分數)。 - question_answering_score (形狀為
(batch_size, n_qa_answers)
的torch.FloatTensor
) — 問答目標(分類)的預測分數。 - language_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
的輸出型別 LxmertForPreTraining。
類 transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput
< 來源 >( loss: typing.Optional[torch.FloatTensor] = None question_answering_score: typing.Optional[torch.FloatTensor] = None language_hidden_states: typing.Optional[tuple[torch.FloatTensor]] = None vision_hidden_states: typing.Optional[tuple[torch.FloatTensor]] = None language_attentions: typing.Optional[tuple[torch.FloatTensor]] = None vision_attentions: typing.Optional[tuple[torch.FloatTensor]] = None cross_encoder_attentions: typing.Optional[tuple[torch.FloatTensor]] = None )
引數
- loss (
*可選*
,當提供labels
時返回,形狀為(1,)
的torch.FloatTensor
) — 總損失,是掩碼語言建模損失和下一序列預測(分類)損失的總和。 - question_answering_score (形狀為
(batch_size, n_qa_answers)
的torch.FloatTensor
, 可選) — 問答目標(分類)的預測分數。 - language_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
的輸出型別 LxmertForQuestionAnswering。
類 transformers.models.lxmert.modeling_tf_lxmert.TFLxmertModelOutput
< 來源 >( language_output: tf.Tensor | None = None vision_output: tf.Tensor | None = None pooled_output: tf.Tensor | None = None language_hidden_states: tuple[tf.Tensor] | None = None vision_hidden_states: tuple[tf.Tensor] | None = None language_attentions: tuple[tf.Tensor] | None = None vision_attentions: tuple[tf.Tensor] | None = None cross_encoder_attentions: tuple[tf.Tensor] | None = None )
引數
- language_output (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
) — 語言編碼器最後一層輸出的隱藏狀態序列。 - vision_output (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
) — 視覺編碼器最後一層輸出的隱藏狀態序列。 - pooled_output (形狀為
(batch_size, hidden_size)
的tf.Tensor
) — 序列中第一個 token(分類、CLS token)的最後一層隱藏狀態,經過線性層和 Tanh 啟用函式進一步處理。 - language_hidden_states (
tuple(tf.Tensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(tf.Tensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(tf.Tensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(tf.Tensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(tf.Tensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
Lxmert 的輸出,包含語言、視覺和跨模態編碼器的最後隱藏狀態、池化輸出和注意力機率。(注意:Lxmert 中的視覺編碼器被稱為“關係”編碼器)
類 transformers.models.lxmert.modeling_tf_lxmert.TFLxmertForPreTrainingOutput
< 來源 >( loss: tf.Tensor | None = None prediction_logits: tf.Tensor | None = None cross_relationship_score: tf.Tensor | None = None question_answering_score: tf.Tensor | None = None language_hidden_states: tuple[tf.Tensor] | None = None vision_hidden_states: tuple[tf.Tensor] | None = None language_attentions: tuple[tf.Tensor] | None = None vision_attentions: tuple[tf.Tensor] | None = None cross_encoder_attentions: tuple[tf.Tensor] | None = None )
引數
- loss (可選,當提供
labels
時返回,形狀為(1,)
的tf.Tensor
) — 總損失,是掩碼語言建模損失和下一序列預測(分類)損失的總和。 - prediction_logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的tf.Tensor
) — 語言建模頭的預測分數(SoftMax 之前每個詞彙 token 的分數)。 - cross_relationship_score (形狀為
(batch_size, 2)
的tf.Tensor
) — 文字匹配目標(分類)頭的預測分數(SoftMax 之前的 True/False 延續分數)。 - question_answering_score (形狀為
(batch_size, n_qa_answers)
的tf.Tensor
) — 問答目標(分類)的預測分數。 - language_hidden_states (
tuple(tf.Tensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(tf.Tensor)
, 可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(tf.Tensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(tf.Tensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(tf.Tensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
的輸出型別 LxmertForPreTraining。
LxmertModel
類 transformers.LxmertModel
< 來源 >( config )
引數
- config (LxmertModel) — 模型配置類,包含模型的所有引數。使用配置檔案初始化模型不會載入與模型相關的權重,僅載入配置。請檢視 from_pretrained() 方法載入模型權重。
Lxmert 裸模型,輸出原始隱藏狀態,頂部無任何特定頭部。
此模型繼承自 PreTrainedModel。請查閱超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件瞭解所有與一般用法和行為相關的事項。
forward
< 來源 >( input_ids: typing.Optional[torch.LongTensor] = None visual_feats: typing.Optional[torch.FloatTensor] = None visual_pos: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None visual_attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = 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.models.lxmert.modeling_lxmert.LxmertModelOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
, 可選) — 詞彙表中輸入序列 token 的索引。填充預設會被忽略。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- visual_feats (形狀為
(batch_size, num_visual_features, visual_feat_dim)
的torch.FloatTensor
) — 此輸入表示視覺特徵。它們是使用 faster-RCNN 模型從邊界框中 ROI 池化的物件特徵。transformers 庫目前不提供這些。
- visual_pos (形狀為
(batch_size, num_visual_features, visual_pos_dim)
的torch.FloatTensor
) — 此輸入表示與其相對(透過索引)視覺特徵對應的空間特徵。預訓練的 LXMERT 模型期望這些空間特徵是 0 到 1 之間歸一化的邊界框。transformers 庫目前不提供這些。
- attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
, 可選) — 遮罩,用於避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
中:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- visual_attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
, 可選) — 遮罩,用於避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
中:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- token_type_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
, 可選) — 分段 token 索引,用於指示輸入的第一部分和第二部分。索引選擇在[0, 1]
中:- 0 對應於**句子 A** 的 token,
- 1 對應於**句子 B** 的 token。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
, 可選) — 可選地,你可以選擇直接傳入嵌入表示,而不是傳入input_ids
。如果你想對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這將非常有用。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.lxmert.modeling_lxmert.LxmertModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.models.lxmert.modeling_lxmert.LxmertModelOutput 或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含各種元素,具體取決於配置 (LxmertConfig) 和輸入。
- language_output (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
) — 語言編碼器最後一層輸出的隱藏狀態序列。 - vision_output (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
) — 視覺編碼器最後一層輸出的隱藏狀態序列。 - pooled_output (形狀為
(batch_size, hidden_size)
的torch.FloatTensor
) — 序列中第一個 token(分類、CLS token)的最後一層隱藏狀態,經過線性層和 Tanh 啟用函式進一步處理。線性層 - language_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
LxmertModel 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的配方需要在此函式中定義,但之後應該呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
LxmertForPreTraining
類 transformers.LxmertForPreTraining
< 源 >( config )
引數
- config (LxmertForPreTraining) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
Lxmert 模型,頂部帶有指定的預訓練頭。
此模型繼承自 PreTrainedModel。請查閱超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件瞭解所有與一般用法和行為相關的事項。
forward
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None visual_feats: typing.Optional[torch.FloatTensor] = None visual_pos: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None visual_attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None obj_labels: typing.Optional[dict[str, tuple[torch.FloatTensor, torch.FloatTensor]]] = None matched_label: typing.Optional[torch.LongTensor] = None ans: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None **kwargs ) → transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 詞彙表中輸入序列 token 的索引。預設情況下會忽略填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- visual_feats (形狀為
(batch_size, num_visual_features, visual_feat_dim)
的torch.FloatTensor
) — 此輸入表示視覺特徵。它們是使用 faster-RCNN 模型從邊界框中 ROI 池化的物件特徵)Transformers 庫目前不提供這些。
- visual_pos (形狀為
(batch_size, num_visual_features, visual_pos_dim)
的torch.FloatTensor
) — 此輸入表示與其(透過索引)視覺特徵相對應的空間特徵。預訓練的 LXMERT 模型期望這些空間特徵是 0 到 1 範圍內的歸一化邊界框。Transformers 庫目前不提供這些。
- attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
,可選) — 遮罩以避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
之間:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- visual_attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
,可選) — 遮罩以避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
之間:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- token_type_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 分段 token 索引,用於指示輸入的第一個和第二個部分。索引選擇在[0, 1]
之間:- 0 對應於 句子 A token,
- 1 對應於 句子 B token。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,除了傳遞input_ids
,你也可以直接傳遞嵌入表示。如果你想比模型的內部嵌入查詢矩陣更精細地控制如何將input_ids
索引轉換為相關向量,這會很有用。 - labels (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 用於計算遮罩語言建模損失的標籤。索引應在[-100, 0, ..., config.vocab_size]
之間(參見input_ids
文件字串)。索引設定為-100
的 token 將被忽略(遮罩),損失只針對標籤在[0, ..., config.vocab_size]
之間的 token 計算。 - obj_labels (
dict[Str -- tuple[Torch.FloatTensor, Torch.FloatTensor]]
, 可選): 每個鍵都以每個視覺損失命名,元組的每個元素分別以形狀(batch_size, num_features)
和(batch_size, num_features, visual_feature_dim)
表示標籤 ID 和標籤分數。 - matched_label (形狀為
(batch_size,)
的torch.LongTensor
,可選) — 用於計算文字輸入是否匹配影像(分類)損失的標籤。輸入應為序列對(參見input_ids
文件字串),索引應在[0, 1]
之間:- 0 表示句子與影像不匹配,
- 1 表示句子與影像匹配。
- ans (形狀為
(batch_size)
的Torch.Tensor
,可選) — 正確答案的獨熱表示 可選 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput 或 tuple(torch.FloatTensor)
一個 transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput 或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(LxmertConfig)和輸入的不同元素。
- loss (
*可選*
,當提供labels
時返回,形狀為(1,)
的torch.FloatTensor
) — 總損失,作為遮罩語言建模損失和下一個序列預測(分類)損失的總和。 - prediction_logits (
torch.FloatTensor
形狀為(batch_size, sequence_length, config.vocab_size)
) — 語言建模頭的預測分數(SoftMax 之前的每個詞彙 token 的分數)。 - cross_relationship_score (形狀為
(batch_size, 2)
的torch.FloatTensor
) — 文字匹配目標(分類)頭部的預測分數(SoftMax 之前的 True/False 延續分數)。 - question_answering_score (形狀為
(batch_size, n_qa_answers)
的torch.FloatTensor
) — 問答目標(分類)的預測分數。 - language_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
LxmertForPreTraining 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的配方需要在此函式中定義,但之後應該呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
LxmertForQuestionAnswering
類 transformers.LxmertForQuestionAnswering
< 源 >( config )
引數
- config (LxmertForQuestionAnswering) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
Lxmert 模型,頂部帶有視覺問答頭,用於下游問答任務。
此模型繼承自 PreTrainedModel。請查閱超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件瞭解所有與一般用法和行為相關的事項。
forward
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None visual_feats: typing.Optional[torch.FloatTensor] = None visual_pos: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None visual_attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = 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.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 詞彙表中輸入序列 token 的索引。預設情況下會忽略填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- visual_feats (形狀為
(batch_size, num_visual_features, visual_feat_dim)
的torch.FloatTensor
) — 此輸入表示視覺特徵。它們是使用 faster-RCNN 模型從邊界框中 ROI 池化的物件特徵)Transformers 庫目前不提供這些。
- visual_pos (形狀為
(batch_size, num_visual_features, visual_pos_dim)
的torch.FloatTensor
) — 此輸入表示與其(透過索引)視覺特徵相對應的空間特徵。預訓練的 LXMERT 模型期望這些空間特徵是 0 到 1 範圍內的歸一化邊界框。Transformers 庫目前不提供這些。
- attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
,可選) — 遮罩以避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
之間:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- visual_attention_mask (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
,可選) — 遮罩以避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
之間:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- token_type_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 分段 token 索引,用於指示輸入的第一個和第二個部分。索引選擇在[0, 1]
之間:- 0 對應於 句子 A token,
- 1 對應於 句子 B token。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,除了傳遞input_ids
,你也可以直接傳遞嵌入表示。如果你想比模型的內部嵌入查詢矩陣更精細地控制如何將input_ids
索引轉換為相關向量,這會很有用。 - labels (形狀為
(batch_size)
的Torch.Tensor
,可選) — 正確答案的獨熱表示 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput 或 tuple(torch.FloatTensor)
一個 transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput 或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(LxmertConfig)和輸入的不同元素。
- loss (
*可選*
,當提供labels
時返回,形狀為(1,)
的torch.FloatTensor
) — 總損失,作為遮罩語言建模損失和下一個序列預測(分類)損失的總和。 - question_answering_score (形狀為
(batch_size, n_qa_answers)
的torch.FloatTensor
,可選) — 問答目標(分類)的預測分數。 - language_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(torch.FloatTensor)
, 可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元組(每個層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(torch.FloatTensor)
, 可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
LxmertForQuestionAnswering 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的配方需要在此函式中定義,但之後應該呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, LxmertForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("unc-nlp/lxmert-base-uncased")
>>> model = LxmertForQuestionAnswering.from_pretrained("unc-nlp/lxmert-base-uncased")
>>> 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)
...
TFLxmertModel
類 transformers.TFLxmertModel
< 源 >( config *inputs **kwargs )
引數
- config (LxmertConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
Lxmert 裸模型,輸出原始隱藏狀態,頂部沒有任何特定頭部。
LXMERT 模型由 Hao Tan 和 Mohit Bansal 在 LXMERT: Learning Cross-Modality Encoder Representations from Transformers 中提出。它是一個視覺和語言 Transformer 模型,在包含 GQA、VQAv2.0、MCSCOCO 標題和 Visual Genome 等多種多模態資料集上進行預訓練,採用遮罩語言建模、感興趣區域特徵迴歸、用於問答屬性預測的交叉熵損失以及物件標籤預測相結合的方式。
此模型也是一個 keras.Model 子類。將其作為常規 TF 2.0 Keras 模型使用,並參考 TF 2.0 文件瞭解所有與一般用法和行為相關的事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在向模型和層傳遞輸入時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞你的輸入和標籤即可!但是,如果你想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,你可以使用三種可能的方式來將所有輸入 Tensor 收集到第一個位置引數中。
- 只有一個
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 visual_feats: tf.Tensor | None = None visual_pos: tf.Tensor | None = None attention_mask: np.ndarray | tf.Tensor | None = None visual_attention_mask: np.ndarray | tf.Tensor | None = None token_type_ids: 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: bool = False ) → transformers.models.lxmert.modeling_tf_lxmert.TFLxmertModelOutput 或 tuple(tf.Tensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
) — 詞彙表中輸入序列 token 的索引。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- visual_feats (形狀為
(batch_size, num_visual_features, visual_feat_dim)
的tf.Tensor
) — 此輸入表示視覺特徵。它們是使用 faster-RCNN 模型從邊界框中 ROI 池化的物件特徵)Transformers 庫目前不提供這些。
- visual_pos (形狀為
(batch_size, num_visual_features, visual_feat_dim)
的tf.Tensor
) — 此輸入表示與其(透過索引)視覺特徵相對應的空間特徵。預訓練的 LXMERT 模型期望這些空間特徵是 0 到 1 範圍內的歸一化邊界框。Transformers 庫目前不提供這些。
- attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
,可選) — 遮罩以避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
之間:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- visual_attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
,可選) — 遮罩以避免對填充 token 索引執行注意力。遮罩值選擇在[0, 1]
之間:- 1 表示**未遮罩**的 token,
- 0 表示**已遮罩**的 token。
- token_type_ids (形狀為
(batch_size, sequence_length)
的tf.Tensor
,可選) — 分段 token 索引,用於指示輸入的第一個和第二個部分。索引選擇在[0, 1]
之間:- 0 對應於 句子 A token,
- 1 對應於 句子 B token。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
,可選) — 可選地,除了傳遞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 模組,在訓練和評估之間的行為不同)。
返回
transformers.models.lxmert.modeling_tf_lxmert.TFLxmertModelOutput 或 tuple(tf.Tensor)
一個 transformers.models.lxmert.modeling_tf_lxmert.TFLxmertModelOutput 或一個 tf.Tensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(LxmertConfig)和輸入的不同元素。
- language_output (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
) — 語言編碼器最後一層輸出的隱藏狀態序列。 - vision_output (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
) — 視覺編碼器最後一層輸出的隱藏狀態序列。 - pooled_output (形狀為
(batch_size, hidden_size)
的tf.Tensor
) — 序列中第一個標記(分類、CLS 標記)的最後一層隱藏狀態,經過線性層和 Tanh 啟用函式進一步處理。線性 - language_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
TFLxmertModel 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的配方需要在此函式中定義,但之後應該呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoTokenizer, TFLxmertModel
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("unc-nlp/lxmert-base-uncased")
>>> model = TFLxmertModel.from_pretrained("unc-nlp/lxmert-base-uncased")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> last_hidden_states = outputs.last_hidden_state
TFLxmertForPreTraining
class transformers.TFLxmertForPreTraining
< source >( config *inputs **kwargs )
引數
- config (LxmertConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。
Lxmert 模型,頂部帶有 語言建模
頭。
LXMERT 模型由 Hao Tan 和 Mohit Bansal 在 LXMERT: Learning Cross-Modality Encoder Representations from Transformers 中提出。它是一個視覺和語言 Transformer 模型,在包含 GQA、VQAv2.0、MCSCOCO 標題和 Visual Genome 等多種多模態資料集上進行預訓練,採用遮罩語言建模、感興趣區域特徵迴歸、用於問答屬性預測的交叉熵損失以及物件標籤預測相結合的方式。
此模型也是一個 keras.Model 子類。將其作為常規 TF 2.0 Keras 模型使用,並參考 TF 2.0 文件瞭解所有與一般用法和行為相關的事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在向模型和層傳遞輸入時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞你的輸入和標籤即可!但是,如果你想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,你可以使用三種可能的方式來將所有輸入 Tensor 收集到第一個位置引數中。
- 只有一個
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 visual_feats: tf.Tensor | None = None visual_pos: tf.Tensor | None = None attention_mask: tf.Tensor | None = None visual_attention_mask: tf.Tensor | None = None token_type_ids: tf.Tensor | None = None inputs_embeds: tf.Tensor | None = None masked_lm_labels: tf.Tensor | None = None obj_labels: dict[str, tuple[tf.Tensor, tf.Tensor]] | None = None matched_label: tf.Tensor | None = None ans: tf.Tensor | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None training: bool = False ) → transformers.models.lxmert.modeling_tf_lxmert.TFLxmertForPreTrainingOutput 或 tuple(tf.Tensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的np.ndarray
或tf.Tensor
) — 詞彙表中輸入序列標記的索引。索引可以使用 AutoTokenizer 獲取。詳情請參閱 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。
- visual_feats (形狀為
(batch_size, num_visual_features, visual_feat_dim)
的tf.Tensor
) — 此輸入表示視覺特徵。它們是透過 Faster-RCNN 模型從邊界框中 ROI 池化的物件特徵。transformers 庫目前不提供這些特徵。
- visual_pos (形狀為
(batch_size, num_visual_features, visual_feat_dim)
的tf.Tensor
) — 此輸入表示與其相對(透過索引)視覺特徵對應的空間特徵。預訓練的 LXMERT 模型期望這些空間特徵在 0 到 1 的範圍內進行標準化邊界框。這些特徵目前不被 transformers 庫提供。
- attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
中:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
- visual_attention_mask (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
中:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
- token_type_ids (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 分段標記索引,指示輸入的第一個和第二個部分。索引選擇在[0, 1]
中:- 0 對應於句子 A 標記,
- 1 對應於句子 B 標記。
- inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可選) — 可選地,你可以選擇直接傳入嵌入表示,而不是傳入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 模組在訓練和評估之間有不同的行為)。 - masked_lm_labels (形狀為
(batch_size, sequence_length)
的tf.Tensor
, 可選) — 用於計算掩碼語言建模損失的標籤。索引應在[-100, 0, ..., config.vocab_size]
範圍內(參見input_ids
文件字串)。索引設定為-100
的標記將被忽略(被掩碼),損失僅針對標籤在[0, ..., config.vocab_size]
範圍內的標記計算。 - obj_labels (
dict[Str -- tuple[tf.Tensor, tf.Tensor]]
, 可選, 預設為None
): 每個鍵以各個視覺損失命名,元組的每個元素形狀分別為(batch_size, num_features)
和(batch_size, num_features, visual_feature_dim)
,分別表示標籤 ID 和標籤分數。 - matched_label (形狀為
(batch_size,)
的tf.Tensor
, 可選) — 用於計算文字輸入是否與影像匹配(分類)損失的標籤。輸入應為序列對(參見input_ids
文件字串)。索引應在[0, 1]
範圍內:- 0 表示句子不匹配影像,
- 1 表示句子匹配影像。
- ans (形狀為
(batch_size)
的tf.Tensor
, 可選, 預設為None
) — 正確答案的獨熱表示 可選
返回
transformers.models.lxmert.modeling_tf_lxmert.TFLxmertForPreTrainingOutput 或 tuple(tf.Tensor)
一個 transformers.models.lxmert.modeling_tf_lxmert.TFLxmertForPreTrainingOutput 或一個 tf.Tensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(LxmertConfig)和輸入的不同元素。
- loss (可選, 當提供
labels
時返回, 形狀為(1,)
的tf.Tensor
) — 總損失,是掩碼語言建模損失和下一序列預測(分類)損失之和。 - prediction_logits (
tf.Tensor
,形狀為(batch_size, sequence_length, config.vocab_size)
) — 語言模型頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 - cross_relationship_score (形狀為
(batch_size, 2)
的tf.Tensor
) — 文字匹配目標(分類)頭的預測分數(SoftMax 之前真/假延續的分數)。 - question_answering_score (形狀為
(batch_size, n_qa_answers)
的tf.Tensor
) — 問答目標(分類)的預測分數。 - language_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - vision_hidden_states (
tuple(tf.Tensor)
, 可選, 當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) — 形狀為(batch_size, sequence_length, hidden_size)
的tf.Tensor
元組(一個用於輸入特徵 + 一個用於每個跨模態層的輸出)。 - language_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - vision_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。 - cross_encoder_attentions (
tuple(tf.Tensor)
, 可選, 當傳入output_attentions=True
或當config.output_attentions=True
時返回) — 形狀為(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元組(每層一個)。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均。
TFLxmertForPreTraining 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的配方需要在此函式中定義,但之後應該呼叫 Module
例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。