Transformers documentation

LXMERT

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2019年8月20日にHF papersで公開され、2020年11月16日にHugging Face Transformersに貢献されました。

LXMERT

概要

LXMERTモデルは、Hao Tan & Mohit Bansal による LXMERT: Learning Cross-Modality Encoder Representations from Transformers で提案されました。これは、ビジュアルモダリティ用、言語モダリティ用、および両モダリティを融合するためのものという3つの双方向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 によって提供されました。元のコードは こちら で確認できます。

使用のコツ

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

リソース

LxmertConfig

クラス transformers.LxmertConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 30522hidden_size: int = 768num_attention_heads: int = 12num_qa_labels: int = 9500num_object_labels: int = 1600num_attr_labels: int = 400intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02l_layers: int = 9x_layers: int = 5r_layers: int = 5visual_feat_dim: int = 2048visual_pos_dim: int = 4visual_loss_normalizer: float = 6.67task_matched: bool = Truetask_mask_lm: bool = Truetask_obj_predict: bool = Truetask_qa: bool = Truevisual_obj_loss: bool = Truevisual_attr_loss: bool = Truevisual_feat_loss: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = True )

パラメータ

  • vocab_size (int、任意、デフォルトは 30522) — モデルの語彙サイズ。input_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) — 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、任意、デフォルトは 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, width, height) を表すためです。
  • 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) — 特徴量回帰の損失関数を計算するかどうか
  • 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と類似した設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

LxmertTokenizer

class transformers.BertTokenizer

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )

パラメータ

  • 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 を継承しており、主要なメソッドの大部分が含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

Lxmert固有の出力

class transformers.models.lxmert.modeling_lxmert.LxmertModelOutput

< >

( language_output: typing.Optional[torch.Tensor] = Nonevision_output: typing.Optional[torch.Tensor] = Nonepooled_output: typing.Optional[torch.Tensor] = Nonelanguage_hidden_states: tuple[torch.Tensor] | None = Nonevision_hidden_states: tuple[torch.Tensor] | None = Nonelanguage_attentions: tuple[torch.Tensor] | None = Nonevision_attentions: tuple[torch.Tensor] | None = Nonecross_encoder_attentions: tuple[torch.Tensor] | None = None )

パラメータ

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

Lxmertの出力には、言語エンコーダー、ビジュアルエンコーダー、およびクロスモーダリティエンコーダーの最後の隠れ状態、プーリング出力、アテンション確率が含まれます。(注:Lxmertにおけるビジュアルエンコーダーは「関係性」エンコーダーと呼ばれます)

クラス transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneprediction_logits: typing.Optional[torch.Tensor] = Nonecross_relationship_score: typing.Optional[torch.Tensor] = Nonequestion_answering_score: typing.Optional[torch.Tensor] = Nonelanguage_hidden_states: tuple[torch.Tensor] | None = Nonevision_hidden_states: tuple[torch.Tensor] | None = Nonelanguage_attentions: tuple[torch.Tensor] | None = Nonevision_attentions: tuple[torch.Tensor] | None = Nonecross_encoder_attentions: tuple[torch.Tensor] | None = None )

パラメータ

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

LxmertForPreTrainingの出力型。

クラス transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonequestion_answering_score: typing.Optional[torch.Tensor] = Nonelanguage_hidden_states: tuple[torch.Tensor] | None = Nonevision_hidden_states: tuple[torch.Tensor] | None = Nonelanguage_attentions: tuple[torch.Tensor] | None = Nonevision_attentions: tuple[torch.Tensor] | None = Nonecross_encoder_attentions: tuple[torch.Tensor] | None = None )

パラメータ

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

LxmertForQuestionAnsweringの出力型。

LxmertModel

class transformers.LxmertModel

< >

( config: LxmertConfig )

パラメータ

  • config (LxmertConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

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

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.Tensor] = Nonevisual_pos: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertModelOutput or tuple(torch.Tensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • visual_feats (torch.Tensor の形状 (batch_size, num_visual_features, visual_feat_dim)) — この入力は視覚特徴を表します。faster-RCNN モデルを使用してバウンディングボックスから ROI プールされたオブジェクト特徴です

    これらは現在、Transformers ライブラリでは提供されていません。

  • visual_pos (torch.Tensor 形状 (batch_size, num_visual_features, visual_pos_dim)) — この入力は、インデックスを介した相対的な視覚特徴に対応する空間的特徴を表します。事前学習済みの LXMERT モデルは、これらの空間的特徴が 0 から

    これらは現在、Transformers ライブラリでは提供されていません。

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • visual_attention_mask (torch.Tensor 形状 (batch_size, sequence_length), (オプション)) — パディングトークンのインデックスでのアテンション計算を回避するためのマスク。マスクの値は [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • token_type_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • inputs_embeds (torch.Tensor、形状 (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 を返すかどうか。

戻り値

LxmertModelOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または LxmertModelOutput。設定(LxmertConfig)と入力に応じて、さまざまな要素で構成されます。

LxmertModel の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。

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

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

LxmertForPreTraining

class transformers.LxmertForPreTraining

< >

( config: LxmertConfig )

パラメータ

  • config (LxmertConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

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

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.Tensor] = Nonevisual_pos: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneobj_labels: dict[str, tuple[torch.Tensor, torch.Tensor]] | None = Nonematched_label: typing.Optional[torch.LongTensor] = Noneans: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertForPreTrainingOutput or tuple(torch.Tensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • visual_feats (torch.Tensor の形状 (batch_size, num_visual_features, visual_feat_dim)) — この入力は視覚特徴を表します。faster-RCNN モデルを使用してバウンディングボックスから ROI プールされたオブジェクト特徴です

    これらは現在、Transformers ライブラリでは提供されていません。

  • visual_pos (torch.Tensor 形状 (batch_size, num_visual_features, visual_pos_dim)) — この入力は、インデックスを介した相対的な視覚特徴に対応する空間的特徴を表します。事前学習済みの LXMERT モデルは、これらの空間的特徴が 0 から

    これらは現在、Transformers ライブラリでは提供されていません。

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • visual_attention_mask (torch.Tensor 形状 (batch_size, sequence_length), (オプション)) — パディングトークンのインデックスでのアテンション計算を回避するためのマスク。マスクの値は [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • token_type_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • inputs_embeds (torch.Tensor、形状 (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 のドキュメント文字列を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失は [0, ..., config.vocab_size] の範囲のラベルを持つトークンに対してのみ計算されます。
  • obj_labels (dict[Str -- tuple[torch.Tensor, torch.Tensor]], 任意): 各キーは視覚損失のそれぞれに命名され、タプルの各要素は、ラベル ID とラベルスコアそれぞれについて、形状が (batch_size, num_features) および (batch_size, num_features, visual_feature_dim) となっています
  • matched_label (torch.LongTensor 形状 (batch_size,), 省略可) — テキスト入力が画像と一致するかどうかを判定するための(分類)損失を計算するためのラベル。入力にはシーケンスペアを指定します( input_ids のドキュメントを参照)。インデックスは [0, 1]:
    • 0 は、文が画像と一致しないことを示します。
    • 1 は、その文が画像と一致することを示します。
  • ans (Torch.Tensor、形状 (batch_size)、任意) — 正解の one hot 表現 任意
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

LxmertForPreTrainingOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または LxmertForPreTrainingOutput。設定(LxmertConfig)と入力に応じて、さまざまな要素で構成されます。

LxmertForPreTraining の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。

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

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

例:

LxmertForQuestionAnswering

クラス transformers.LxmertForQuestionAnswering

< >

( config: LxmertConfig )

パラメータ

  • config (LxmertConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

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

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.Tensor] = Nonevisual_pos: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertForQuestionAnsweringOutput or tuple(torch.Tensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • visual_feats (torch.Tensor の形状 (batch_size, num_visual_features, visual_feat_dim)) — この入力は視覚特徴を表します。faster-RCNN モデルを使用してバウンディングボックスから ROI プールされたオブジェクト特徴です

    これらは現在、Transformers ライブラリでは提供されていません。

  • visual_pos (torch.Tensor 形状 (batch_size, num_visual_features, visual_pos_dim)) — この入力は、インデックスを介した相対的な視覚特徴に対応する空間的特徴を表します。事前学習済みの LXMERT モデルは、これらの空間的特徴が 0 から

    これらは現在、Transformers ライブラリでは提供されていません。

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • visual_attention_mask (torch.Tensor 形状 (batch_size, sequence_length), (オプション)) — パディングトークンのインデックスでのアテンション計算を回避するためのマスク。マスクの値は [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • token_type_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — 入力テキストの第1部分と第2部分を区別するためのセグメントトークンインデックス。インデックスは [0, 1]:
    • 0 は sentence A トークンに対応します。
    • 1 は sentence B トークンに対応します。

    トークンタイプIDとは?

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (Torch.Tensor、shape (batch_size)、任意) — 正解の one-hot 表現
  • output_attentions (bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルの attentions を参照してください。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

LxmertForQuestionAnsweringOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または LxmertForQuestionAnsweringOutput。設定(LxmertConfig)と入力に応じて、さまざまな要素で構成されます。

LxmertForQuestionAnswering の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。

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

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

例:

>>> 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)
...
Update on GitHub