# LXMERT

## 概要

LXMERTモデルは、Hao Tan & Mohit Bansal による [LXMERT: Learning Cross-Modality Encoder Representations from Transformers](https://huggingface.co/papers/1908.07490) で提案されました。これは、ビジュアルモダリティ用、言語モダリティ用、および両モダリティを融合するためのものという、双方向 Transformer エンコーダーのシリーズです。事前学習には、マスク言語モデリング、ビジュアル-言語テキストアライメント、ROI 特徴量回帰、マスクビジュアル属性モデリング、マスクビジュアルオブジェクトモデリング、ビジュアル質問応答の目的関数の組み合わせが使用されます。事前学習には、複数のマルチモーダルデータセットが使用されます。MSCOCO、Visual-Genome + Visual-Genome Question Answering、VQA 2.0、および GQA です。

論文の抄録は以下の通りです。

*視覚と言語の推論には、視覚的概念、言語の意味論、そして何よりも重要なのは、これら2つのモダリティ間の整合性と関係性の理解が必要です。そこで、これらの視覚と言語の接続を学習するためのLXMERT（Learning Cross-Modality Encoder Representations from Transformers）フレームワークを提案します。LXMERTでは、オブジェクト関係エンコーダ、言語エンコーダ、およびクロスモダリティエンコーダの3つのエンコーダからなる大規模なTransformerモデルを構築します。次に、モデルに視覚と言語の意味論を接続する能力を持たせるために、マスク言語モデリング、マスクオブジェクト予測（特徴量回帰とラベル分類）、クロスモダリティマッチング、画像質問応答という5つの多様な代表的な事前学習タスクを通じて、大量の画像と文のペアでモデルを事前学習します。これらのタスクは、モダリティ内およびクロスモダリティの関係性の学習に役立ちます。事前学習済みパラメータからのファインチューニング後、当社のモデルは2つの視覚質問応答データセット（VQAとGQA）で最先端の結果を達成しました。また、事前学習済みクロスモダリティモデルの汎化性を示すために、挑戦的な視覚推論タスクであるNLVRに適応させ、従来の最良結果を絶対値で22%（54%から76%）向上させました。最後に、詳細なアブレーションスタディを行い、当社の新しいモデルコンポーネントと事前学習戦略が、強力な結果に大きく貢献していることを証明します。また、異なるエンコーダに対するいくつかの注意可視化も提示します*

このモデルは [eltoto1219](https://huggingface.co/eltoto1219) によって提供されました。元のコードは [こちら](https://github.com/airsplay/lxmert) で確認できます。

## 使用のコツ

- バウンディングボックスは、視覚特徴埋め込みの使用に必須ではありません。視覚的・空間的な特徴であれば、どのようなものでも機能します。
- LXMERT が出力する言語の隠れ状態と視覚の隠れ状態は、どちらもクロスモダリティ層を通過するため、両方のモダリティの情報を含んでいます。自己のモダリティのみをアテンションする状態にアクセスするには、タプルの最初の入力から視覚/言語の隠れ状態を選択してください。
- 双方向クロスモダリティエンコーダーアテンションは、言語モダリティを入力として、ビジョンモダリティをコンテキストベクトルとして使用した場合にのみ、アテンション値を返します。さらに、クロスモダリティエンコーダーには各モダリティごとの自己アテンションとクロスアテンションが含まれていますが、返されるのはクロスアテンションのみであり、両方の自己アテンションの出力は無視されます。

## リソース

- [質問応答タスクガイド](../tasks/question_answering)

## LxmertConfig[[transformers.LxmertConfig]]

#### transformers.LxmertConfig[[transformers.LxmertConfig]]

```python
transformers.LxmertConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 30522, hidden_size: int = 768, num_attention_heads: int = 12, num_qa_labels: int = 9500, num_object_labels: int = 1600, num_attr_labels: int = 400, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.1, attention_probs_dropout_prob: float | int = 0.1, max_position_embeddings: int = 512, type_vocab_size: int = 2, initializer_range: float = 0.02, l_layers: int = 9, x_layers: int = 5, r_layers: int = 5, visual_feat_dim: int = 2048, visual_pos_dim: int = 4, visual_loss_normalizer: float = 6.67, task_matched: bool = True, task_mask_lm: bool = True, task_obj_predict: bool = True, task_qa: bool = True, visual_obj_loss: bool = True, visual_attr_loss: bool = True, visual_feat_loss: bool = True, pad_token_id: int | None = None, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, tie_word_embeddings: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/configuration_lxmert.py#L24)

**パラメータ:**

vocab_size (`int`、*任意*、デフォルトは`30522`) : モデルの語彙サイズ。`input_ids`で表現できるトークンの種類数を定義します。

hidden_size (`int`、*任意*、デフォルトは`768`) : 隠れ表現の次元数。

num_attention_heads (`int`、*任意*、デフォルトは `12`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

num_qa_labels (`int`、*optional*、デフォルト値は 9500) : これは、存在する質問応答（QA）ラベルの総数を表します。QA を用いたデータセットを複数使用する場合は、ユーザーはすべてのデータセットに存在するラベルの総数を考慮する必要があります。

num_object_labels (`int`、*optional*、デフォルトは 1600) : lxmert がプールのされたオブジェクト特徴量を分類できる、意味的にユニークなオブジェクトの総数を表します。

num_attr_labels (`int`、*optional*、デフォルトは 400) : lxmert がプールのされたオブジェクト特徴量を分類できる、意味的に固有な属性の総数を表します。

intermediate_size (`int`、*任意*、デフォルトは `3072`) : MLP 表現の次元数。

hidden_act (`str`、*任意*、デフォルトは`gelu`) : デコーダーで使用する非線形活性化関数（関数または文字列）。例えば、`"gelu"`、`"relu"`、`"silu"`など。

hidden_dropout_prob (`Union[float, int]`、*任意*、デフォルト値は`0.1`) : embeddings、encoder、pooler 内のすべての全結合層における dropout 確率。

attention_probs_dropout_prob (`Union[float, int]`、*任意*、デフォルトは`0.1`) : 注意確率のドロップアウト率。

max_position_embeddings (`int`、*任意*、デフォルトは`512`) : このモデルが使用される可能性のある最大シーケンス長。

type_vocab_size (`int`、*任意*、デフォルトは`2`) : `token_type_ids`の語彙サイズ。

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

l_layers (`int`、*optional*、デフォルトは 9) : Transformer 言語エンコーダーの隠れ層の数。

x_layers (`int`, *optional*, デフォルトは 5) : Transformer のクロスモーダリティエンコーダーにおける隠れ層の数。

r_layers (`int`、*optional*、デフォルトは 5) : Transformer 視覚エンコーダーの隠れ層の数。

visual_feat_dim (`int`、*任意*、デフォルトは 2048) : モデルの入力として使用されるプーリング済みオブジェクト特徴量の最後の次元を表します。これは、各オブジェクト特徴量自体のサイズを示します。

visual_pos_dim (`int`, *optional*, デフォルトは 4) : 視覚特徴に混合される空間特徴の数を表します。デフォルトが 4 に設定されているのは、一般的にバウンディングボックスの位置（つまり、(x, y, width, height)）を表すためです。

visual_loss_normalizer (`float`、*optional*、デフォルト値は 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`) : 特徴量回帰損失の目的関数を計算するかどうか

pad_token_id (`int`, *任意*) : 語彙内でパディングに使用されるトークンID。

bos_token_id (`int`, *任意*) : 語彙内でストリームの開始に使用されるトークン ID。

eos_token_id (`Union[int, list[int]]`、*任意*) : 語彙内でストリームの終了に使用されるトークン ID。

tie_word_embeddings (`bool`、*任意*、デフォルトは`True`) : モデルの`tied_weights_keys`マッピングに従って重み埋め込みを共有するかどうか。

これはLxmertModelの設定を保存するための設定クラスです。指定された引数に基づいてLxmertモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[unc-nlp/lxmert-base-uncased](https://huggingface.co/unc-nlp/lxmert-base-uncased)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

## LxmertTokenizer[[transformers.BertTokenizer]]

#### transformers.BertTokenizer[[transformers.BertTokenizer]]

```python
transformers.BertTokenizer(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bert/tokenization_bert.py#L41)

**パラメータ:**

vocab (`str` または `dict[str, int]`、*省略可*) : カスタムの語彙辞書です。指定しない場合、`vocab_file` から語彙が読み込まれます。

do_lower_case (`bool`、*任意*、デフォルトは `True`) : トークン化時に、入力を小文字にするかどうか。

unk_token (`str`、*任意*、デフォルトは `"[UNK]"`) : 不明トークン。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。

sep_token (`str`、*任意*、デフォルトは `"[SEP]"`) : 区切りトークンです。複数のシーケンスからシーケンスを構築する際に使用されます。例えば、シーケンス分類では2つのシーケンス、質問応答ではテキストと質問です。また、特殊トークンを用いて構築されたシーケンスの最後のトークンとしても使用されます。

pad_token (`str`、*任意*、デフォルトは `"[PAD]"`) : パディングに使用されるトークンです。長さの異なるシーケンスをバッチ処理する場合などに使用します。

cls_token (`str`、*任意*、デフォルトは`"[CLS]"`) : シーケンス分類（トークンごとの分類ではなく、シーケンス全体に対する分類）を行う際に使用される分類トークンです。特殊トークンを用いて構築された場合、シーケンスの最初のトークンになります。

mask_token (`str`、*任意*、デフォルトは `"[MASK]"`) : 値をマスクするために使用されるトークン。これは、マスク言語モデリングでこのモデルをトレーニングする際に使用されるトークンです。モデルが予測しようとするトークンです。

tokenize_chinese_chars (`bool`, *任意*, デフォルトは `True`) : 中国語の文字をトークナイズするかどうか。

strip_accents (`bool`, *任意*) : アクセントをすべて除去するかどうか。このオプションが指定されない場合、`lowercase` の値によって決定されます（元の BERT と同じ）。

BERTのトークナイザーを構築します（HuggingFaceのtokenizersライブラリをバックエンドとして使用）。WordPieceに基づいています。

このトークナイザーは、[TokenizersBackend](/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend) を継承しており、主要なメソッドの大部分がそこに含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

## Lxmert固有の出力[[transformers.models.lxmert.modeling_lxmert.LxmertModelOutput]]

#### transformers.models.lxmert.modeling_lxmert.LxmertModelOutput[[transformers.models.lxmert.modeling_lxmert.LxmertModelOutput]]

```python
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: tuple[torch.FloatTensor] | None = None, vision_hidden_states: tuple[torch.FloatTensor] | None = None, language_attentions: tuple[torch.FloatTensor] | None = None, vision_attentions: tuple[torch.FloatTensor] | None = None, cross_encoder_attentions: tuple[torch.FloatTensor] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L49)

**パラメータ:**

language_output (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) : 言語エンコーダーの最終層の出力における、隠れ状態のシーケンス。

vision_output (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) : 視覚エンコーダーの最終層の出力における、hidden-states のシーケンス。

pooled_output (`torch.FloatTensor`、shape `(batch_size, hidden_size)`) : シーケンスの最初のトークン（classification、CLS、トークン）の最終層の隠れ状態。Linear層とTanh活性化関数によってさらに処理されます。Linear

language_hidden_states (`tuple(torch.FloatTensor)`、*任意*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) : `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。

vision_hidden_states (`tuple(torch.FloatTensor)`、*任意*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) : `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。

language_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

vision_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

cross_encoder_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

Lxmert の出力には、言語、視覚、およびクロスモーダリティエンコーダーの最終隠れ状態、プーリング出力、アテンション確率が含まれます。（注: Lxmert の視覚エンコーダーは「関係性」エンコーダーと呼ばれます）

#### transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput[[transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput]]

```python
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: tuple[torch.FloatTensor] | None = None, vision_hidden_states: tuple[torch.FloatTensor] | None = None, language_attentions: tuple[torch.FloatTensor] | None = None, vision_attentions: tuple[torch.FloatTensor] | None = None, cross_encoder_attentions: tuple[torch.FloatTensor] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L136)

**パラメータ:**

loss (`*optional*`、`labels` が提供された場合のみ返されます、`torch.FloatTensor`、形状 `(1,)`) : マスク言語モデリング損失と次シーケンス予測（分類）損失の合計による総損失。

prediction_logits (`torch.FloatTensor`、shape `(batch_size, sequence_length, config.vocab_size)`) : 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。

cross_relationship_score (`torch.FloatTensor`、shape `(batch_size, 2)`) : テキストマッチング目的（分類）ヘッドの予測スコア（SoftMax 前の True/False 継続のスコア）。

question_answering_score (`torch.FloatTensor`、shape `(batch_size, n_qa_answers)`) : 質問応答目的（分類）の予測スコア。

language_hidden_states (`tuple(torch.FloatTensor)`、*任意*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) : `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。

vision_hidden_states (`tuple(torch.FloatTensor)`、*任意*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) : `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。

language_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

vision_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

cross_encoder_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

[LxmertForPreTraining](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertForPreTraining)の出力型。

#### transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput[[transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput]]

```python
transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput(loss: typing.Optional[torch.FloatTensor] = None, question_answering_score: typing.Optional[torch.FloatTensor] = None, language_hidden_states: tuple[torch.FloatTensor] | None = None, vision_hidden_states: tuple[torch.FloatTensor] | None = None, language_attentions: tuple[torch.FloatTensor] | None = None, vision_attentions: tuple[torch.FloatTensor] | None = None, cross_encoder_attentions: tuple[torch.FloatTensor] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L94)

**パラメータ:**

loss (`*optional*`、`labels` が提供された場合のみ返されます。`torch.FloatTensor`、形状 `(1,)`) : マスク言語モデリング損失と次シーケンス予測（分類）損失の合計として計算される総損失。

question_answering_score (`torch.FloatTensor`、shape `(batch_size, n_qa_answers)`、*optional*) : 質問応答の目的（分類）の予測スコア。

language_hidden_states (`tuple(torch.FloatTensor)`、*任意*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) : `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。

vision_hidden_states (`tuple(torch.FloatTensor)`、*任意*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) : `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。

language_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

vision_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

cross_encoder_attentions (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) : `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

[LxmertForQuestionAnswering](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertForQuestionAnswering)の出力型。

## LxmertModel[[transformers.LxmertModel]]

#### transformers.LxmertModel[[transformers.LxmertModel]]

```python
transformers.LxmertModel(config: LxmertConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L675)

**パラメータ:**

config ([LxmertConfig](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

特定のヘッドを付加せず、生のhidden-statesを出力する素のLxmertモデル。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.LxmertModel.forward]]

```python
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: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L690)

**パラメータ:**

input_ids (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

visual_feats (`torch.FloatTensor`、shape `(batch_size, num_visual_features, visual_feat_dim)`) : この入力は視覚特徴を表します。faster-RCNN モデルを使用してバウンディングボックスから ROI プールされたオブジェクト特徴です) 現在、transformers ライブラリではこれらは提供されていません。

visual_pos (`torch.FloatTensor`、shape `(batch_size, num_visual_features, visual_pos_dim)`) : この入力は、インデックスを介した相対的な視覚特徴に対応する空間的特徴を表します。事前学習済みの LXMERT モデルでは、これらの空間的特徴が 0 から 1 のスケールで正規化されたバウンディングボックスであると想定されています。現在、Transformers ライブラリではこれらは提供されていません。

attention_mask (`torch.FloatTensor`、形状 `(batch_size, sequence_length)`、*任意*) : パディングトークンのインデックスに対してアテンションを実行しないためのマスク。`[0, 1]` から選択されるマスクの値:  - **マスクされない**トークンは 1、**マスクされる**トークンは 0。  [アテンションマスクとは?](../glossary#attention-mask)

visual_attention_mask (`torch.FloatTensor`、形状 `(batch_size, sequence_length)`、*任意*) : パディングトークンのインデックスに対してアテンションを実行しないためのマスク。`[0, 1]` から選択されるマスクの値:  - **マスクされない**トークンは 1、**マスクされる**トークンは 0。  [アテンションマスクとは?](../glossary#attention-mask)

token_type_ids (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : 入力の前半と後半を示すセグメントトークンインデックス。インデックスは `[0, 1]` から選択されます:  - 0 は *文 A* のトークンに対応します。 - 1 は *文 B* のトークンに対応します。  [トークンタイプIDとは何ですか？](../glossary#token-type-ids)

inputs_embeds (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [LxmertModelOutput](/docs/transformers/main/ja/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertModelOutput) または `tuple(torch.FloatTensor)`

設定([LxmertConfig](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertConfig))や入力に応じて、さまざまな要素で構成される [LxmertModelOutput](/docs/transformers/main/ja/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertModelOutput)、または `torch.FloatTensor` のタプル(`return_dict=False` が渡された場合、または `config.return_dict=False` の場合)。

[LxmertModel](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertModel) の forward メソッドは、`__call__` という特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **language_output** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) -- 言語エンコーダーの最終層の出力における隠れ状態のシーケンス。
- **vision_output** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) -- 視覚エンコーダの最終層の出力における、隠れ状態のシーケンス。
- **pooled_output** (`torch.FloatTensor`、shape `(batch_size, hidden_size)`) -- シーケンスの最初のトークン（classification、CLS、トークン）の最終層の隠れ状態を、Linear層とTanh活性化関数でさらに処理したものです。Linear
- **language_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。
- **vision_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。
- **language_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返される) -- `torch.FloatTensor` のタプル（レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。
- **vision_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。
- **cross_encoder_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返される) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

## LxmertForPreTraining[[transformers.LxmertForPreTraining]]

#### transformers.LxmertForPreTraining[[transformers.LxmertForPreTraining]]

```python
transformers.LxmertForPreTraining(config: LxmertConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L826)

**パラメータ:**

config ([LxmertConfig](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

指定された事前学習ヘッドを上部に備えた Lxmert モデル。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.LxmertForPreTraining.forward]]

```python
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: dict[str, tuple[torch.FloatTensor, torch.FloatTensor]] | None = None, matched_label: typing.Optional[torch.LongTensor] = None, ans: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L976)

**パラメータ:**

input_ids (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

visual_feats (`torch.FloatTensor`、shape `(batch_size, num_visual_features, visual_feat_dim)`) : この入力は視覚特徴を表します。faster-RCNN モデルを使用してバウンディングボックスから ROI プールされたオブジェクト特徴です) 現在、transformers ライブラリではこれらは提供されていません。

visual_pos (`torch.FloatTensor`、shape `(batch_size, num_visual_features, visual_pos_dim)`) : この入力は、インデックスを介した相対的な視覚特徴に対応する空間的特徴を表します。事前学習済みの LXMERT モデルでは、これらの空間的特徴が 0 から 1 のスケールで正規化されたバウンディングボックスであると想定されています。現在、Transformers ライブラリではこれらは提供されていません。

attention_mask (`torch.FloatTensor`、形状 `(batch_size, sequence_length)`、*任意*) : パディングトークンのインデックスに対してアテンションを実行しないためのマスク。`[0, 1]` から選択されるマスクの値:  - **マスクされない**トークンは 1、**マスクされる**トークンは 0。  [アテンションマスクとは?](../glossary#attention-mask)

visual_attention_mask (`torch.FloatTensor`、形状 `(batch_size, sequence_length)`、*任意*) : パディングトークンのインデックスに対してアテンションを実行しないためのマスク。`[0, 1]` から選択されるマスクの値:  - **マスクされない**トークンは 1、**マスクされる**トークンは 0。  [アテンションマスクとは?](../glossary#attention-mask)

token_type_ids (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : 入力の前半と後半を示すセグメントトークンインデックス。インデックスは `[0, 1]` から選択されます:  - 0 は *文 A* のトークンに対応します。 - 1 は *文 B* のトークンに対応します。  [トークンタイプIDとは何ですか？](../glossary#token-type-ids)

inputs_embeds (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

labels (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : マスク言語モデリング損失を計算するためのラベル。インデックスは `[-100, 0, ..., config.vocab_size]` の範囲である必要があります（`input_ids` の docstring を参照）。インデックスが `-100` に設定されたトークンは無視（マスク）され、損失は `[0, ..., config.vocab_size]` の範囲のラベルを持つトークンに対してのみ計算されます。

obj_labels (`dict[Str : tuple[Torch.FloatTensor, Torch.FloatTensor]]`、*任意*): 各キーは各ビジュアル損失の名前が付けられており、タプルの各要素はそれぞれラベル ID とラベルスコアに対応し、形状は `(batch_size, num_features)` および `(batch_size, num_features, visual_feature_dim)` です

matched_label (`torch.LongTensor`、shape `(batch_size,)`、*optional*) : テキスト入力と画像が一致するかどうかを判定するための（分類）損失を計算するためのラベル。入力は一連のペアである必要があります（`input_ids` の docstring を参照）。インデックスは `[0, 1]` の範囲である必要があります： - 0 は文が画像と一致しないことを示します。 - 1 は文が画像と一致することを示します。

ans (`Torch.Tensor`、shape `(batch_size)`、*任意*) : 正解の one hot 表現 *任意*

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [LxmertForPreTrainingOutput](/docs/transformers/main/ja/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput) または `tuple(torch.FloatTensor)`

[LxmertForPreTrainingOutput](/docs/transformers/main/ja/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput)、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[LxmertConfig](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertConfig)）と入力に応じて、さまざまな要素で構成されます。

[LxmertForPreTraining](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertForPreTraining) の forward メソッドは、`__call__` という特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`*optional*`、`labels` が指定された場合のみ返されます。`torch.FloatTensor`、shape `(1,)`) -- マスク言語モデリングの損失と、次のシーケンス予測（分類）の損失の合計。
- **prediction_logits** (`torch.FloatTensor`、shape `(batch_size, sequence_length, config.vocab_size)`) -- 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。
- **cross_relationship_score**（`torch.FloatTensor`、形状 `(batch_size, 2)`）-- テキスト一致の目的（分類）ヘッドの予測スコア（SoftMax 適用前の True/False 継続のスコア）。
- **question_answering_score**（`torch.FloatTensor`、shape: `(batch_size, n_qa_answers)`）-- 質問応答目的（分類）の予測スコア。
- **language_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。
- **vision_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。
- **language_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返される) -- `torch.FloatTensor` のタプル（レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。
- **vision_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。
- **cross_encoder_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返される) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

例:

```python
```

## LxmertForQuestionAnswering[[transformers.LxmertForQuestionAnswering]]

#### transformers.LxmertForQuestionAnswering[[transformers.LxmertForQuestionAnswering]]

```python
transformers.LxmertForQuestionAnswering(config: LxmertConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L1123)

**パラメータ:**

config ([LxmertConfig](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

Lxmert モデルは、下流の QA タスク用にビジュアル・アンサーヘッドを上部に備えています

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.LxmertForQuestionAnswering.forward]]

```python
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: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L1215)

**パラメータ:**

input_ids (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

visual_feats (`torch.FloatTensor`、shape `(batch_size, num_visual_features, visual_feat_dim)`) : この入力は視覚特徴を表します。faster-RCNN モデルを使用してバウンディングボックスから ROI プールされたオブジェクト特徴です) 現在、transformers ライブラリではこれらは提供されていません。

visual_pos (`torch.FloatTensor`、shape `(batch_size, num_visual_features, visual_pos_dim)`) : この入力は、インデックスを介した相対的な視覚特徴に対応する空間的特徴を表します。事前学習済みの LXMERT モデルでは、これらの空間的特徴が 0 から 1 のスケールで正規化されたバウンディングボックスであると想定されています。現在、Transformers ライブラリではこれらは提供されていません。

attention_mask (`torch.FloatTensor`、形状 `(batch_size, sequence_length)`、*任意*) : パディングトークンのインデックスに対してアテンションを実行しないためのマスク。`[0, 1]` から選択されるマスクの値:  - **マスクされない**トークンは 1、**マスクされる**トークンは 0。  [アテンションマスクとは?](../glossary#attention-mask)

visual_attention_mask (`torch.FloatTensor`、形状 `(batch_size, sequence_length)`、*任意*) : パディングトークンのインデックスに対してアテンションを実行しないためのマスク。`[0, 1]` から選択されるマスクの値:  - **マスクされない**トークンは 1、**マスクされる**トークンは 0。  [アテンションマスクとは?](../glossary#attention-mask)

token_type_ids (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : 入力の前半と後半を示すセグメントトークンインデックス。インデックスは `[0, 1]` から選択されます:  - 0 は *文 A* のトークンに対応します。 - 1 は *文 B* のトークンに対応します。  [トークンタイプIDとは何ですか？](../glossary#token-type-ids)

inputs_embeds (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

labels (`Torch.Tensor`、shape `(batch_size)`、*optional*) : 正解の one-hot 表現

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [LxmertForQuestionAnsweringOutput](/docs/transformers/main/ja/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput) または `tuple(torch.FloatTensor)`

設定([LxmertConfig](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertConfig))や入力に応じて、さまざまな要素で構成される [LxmertForQuestionAnsweringOutput](/docs/transformers/main/ja/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput) または `torch.FloatTensor` のタプル(`return_dict=False` が渡された場合、または `config.return_dict=False` の場合)。

[LxmertForQuestionAnswering](/docs/transformers/main/ja/model_doc/lxmert#transformers.LxmertForQuestionAnswering) の forward メソッドは、`__call__` という特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`*optional*`、`labels` が指定された場合のみ返されます。`torch.FloatTensor`、形状 `(1,)`) -- マスク言語モデリングの損失と次シーケンス予測（分類）の損失の合計。
- **question_answering_score** (`torch.FloatTensor`、shape `(batch_size, n_qa_answers)`、*optional*) -- 質問応答目的（分類）の予測スコア。
- **language_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。
- **vision_hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（入力特徴量用 1 つ + 各クロスモダリティ層の出力用 1 つ）、形状は `(batch_size, sequence_length, hidden_size)`。
- **language_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返される) -- `torch.FloatTensor` のタプル（レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。
- **vision_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。
- **cross_encoder_attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返される) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。アテンションの softmax 後のアテンション重みで、セルフアテンションヘッドにおける加重平均の計算に使用されます。

例:

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

