Transformers documentation

VisualBERT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Model ini dipublikasikan di HF papers pada 2019-08-09 dan disumbangkan ke Hugging Face Transformers pada 2021-06-02.

VisualBERT

VisualBERT adalah model vision-and-language. Model ini menggunakan pendekatan yang disebut “early fusion”, di mana input diproses bersama ke dalam satu tumpukan Transformer yang diinisialisasi dari BERT. Self-attention secara implisit menyelaraskan kata-kata dengan objek gambar yang bersesuaian. Model ini memproses teks dengan fitur visual dari region object-detector, bukan dari piksel mentah.

Anda dapat menemukan semua checkpoint VisualBERT asli di bawah organisasi UCLA NLP.

Model ini disumbangkan oleh gchhablani. Klik model VisualBERT di bilah sisi kanan untuk melihat lebih banyak contoh cara menerapkan VisualBERT ke berbagai tugas gambar dan bahasa.

Contoh di bawah ini menunjukkan cara menjawab pertanyaan berdasarkan gambar dengan kelas AutoModel.

AutoModel
from io import BytesIO

import requests
import torch
import torchvision
from PIL import Image

from transformers import AutoTokenizer, VisualBertForQuestionAnswering


def get_visual_embeddings_simple(image, device=None):

    model = torchvision.models.resnet50(pretrained=True)
    model = torch.nn.Sequential(*list(model.children())[:-1])
    model.to(model.device)
    model.eval()

    transform = torchvision.transforms.Compose([
        torchvision.transforms.Resize(256),
        torchvision.transforms.CenterCrop(224),
        torchvision.transforms.ToTensor(),
        torchvision.transforms.Normalize(
            mean=[0.485, 0.456, 0.406],
            std=[0.229, 0.224, 0.225]
        )
    ])

    if isinstance(image, str):
        image = Image.open(image).convert('RGB')
    elif isinstance(image, Image.Image):
        image = image.convert('RGB')
    else:
        raise ValueError("Image must be a PIL Image or path to image file")

    image_tensor = transform(image).unsqueeze(0).to(model.device)

    with torch.no_grad():
        features = model(image_tensor)

    batch_size = features.shape[0]
    feature_dim = features.shape[1]
    visual_seq_length = 10

    visual_embeds = features.squeeze(-1).squeeze(-1).unsqueeze(1).expand(batch_size, visual_seq_length, feature_dim)

    return visual_embeds

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisualBertForQuestionAnswering.from_pretrained("uclanlp/visualbert-vqa-coco-pre", device_map="auto")

response = requests.get("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg")
image = Image.open(BytesIO(response.content))

visual_embeds = get_visual_embeddings_simple(image)

inputs = tokenizer("What is shown in this image?", return_tensors="pt").to(model.device)

visual_token_type_ids = torch.ones(visual_embeds.shape[:-1], dtype=torch.long)
visual_attention_mask = torch.ones(visual_embeds.shape[:-1], dtype=torch.float)

inputs.update({
    "visual_embeds": visual_embeds,
    "visual_token_type_ids": visual_token_type_ids,
    "visual_attention_mask": visual_attention_mask,
})

with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    predicted_answer_idx = logits.argmax(-1).item()

print(f"Predicted answer: {predicted_answer_idx}")

Catatan

  • Gunakan checkpoint yang telah di-fine-tune untuk tugas turunan, seperti visualbert-vqa untuk visual question answering. Jika tidak, gunakan salah satu checkpoint pretrained.
  • Detektor dan bobot yang telah ditala ulang tidak disediakan (tersedia dalam proyek penelitian), tetapi state dapat dimuat langsung ke dalam detektor.
  • Input teks digabungkan di depan embedding visual pada lapisan embedding dan diharapkan dibatasi oleh token [CLS] dan SEP.
  • Segment ids harus diatur dengan tepat untuk bagian teks dan visual.
  • Gunakan BertTokenizer untuk mengkodekan teks dan implementasikan detektor/processor gambar kustom untuk mendapatkan visual embeddings.

Sumber daya

  • Lihat notebook ini untuk contoh penggunaan VisualBERT untuk visual question answering.
  • Lihat notebook ini untuk contoh cara menghasilkan visual embeddings.

VisualBertConfig

kelas transformers.VisualBertConfig

< >

( 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 = 768visual_embedding_dim: int = 512num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_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.02layer_norm_eps: float = 1e-12bypass_transformer: bool = Falsespecial_visual_initialize: bool = Truepad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = True )

Parameter

  • vocab_size (int, opsional, default 30522) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan oleh input_ids.
  • hidden_size (int, opsional, default 768) — Dimensi dari representasi tersembunyi.
  • visual_embedding_dim (int, opsional, default 512) — Dimensi dari visual embeddings yang akan diteruskan ke model.
  • num_hidden_layers (int, opsional, default 12) — Jumlah lapisan tersembunyi dalam decoder Transformer.
  • num_attention_heads (int, opsional, default 12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer.
  • intermediate_size (int, opsional, default 3072) — Dimensi representasi MLP.
  • hidden_act (str, opsional, defaultnya gelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, "gelu", "relu", "silu", dan sebagainya.
  • hidden_dropout_prob (Union[float, int], opsional, default 0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler.
  • attention_probs_dropout_prob (Union[float, int], opsional, default 0.1) — Rasio dropout untuk probabilitas perhatian.
  • max_position_embeddings (int, opsional, default 512) — Panjang maksimum urutan yang mungkin digunakan dengan model ini.
  • type_vocab_size (int, opsional, default 2) — Ukuran kosakata dari token_type_ids.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • layer_norm_eps (float, opsional, defaultnya 1e-12) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
  • bypass_transformer (bool, opsional, default False) — Apakah model harus melewati transformer untuk embedding visual. Jika diset ke True, model secara langsung mengonkatenasi embedding visual dari VisualBertEmbeddings dengan output teks dari transformer, lalu meneruskannya ke lapisan self-attention.
  • special_visual_initialize (bool, opsional, default True) — Apakah bobot embedding tipe token visual dan tipe posisi harus diinisialisasi sama dengan embedding tipe token teks dan tipe posisi positif. Jika disetel ke True, bobot dari embedding tipe token teks dan tipe posisi akan disalin ke lapisan embedding visual yang sesuai.
  • pad_token_id (int, opsional, default 1) — ID token yang digunakan untuk padding dalam kosakata.
  • bos_token_id (int, opsional, default 0) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata.
  • eos_token_id (Union[int, list[int]], opsional, default 2) — ID token yang digunakan untuk end-of-stream dalam kosakata.
  • tie_word_embeddings (bool, opsional, default True) — Apakah akan mengikat bobot embedding sesuai dengan pemetaan tied_weights_keys model.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari VisualBertModel. Kelas ini digunakan untuk menginstansiasi model Visual Bert sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Menginstansiasi konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari uclanlp/visualbert-vqa-coco-pre

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

Contoh:

>>> from transformers import VisualBertConfig, VisualBertModel

>>> # Initializing a VisualBERT visualbert-vqa-coco-pre style configuration
>>> configuration = VisualBertConfig.from_pretrained("uclanlp/visualbert-vqa-coco-pre")

>>> # Initializing a model (with random weights) from the visualbert-vqa-coco-pre style configuration
>>> model = VisualBertModel(configuration)

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

VisualBertModel

kelas transformers.VisualBertModel

< >

( config: VisualBertConfigadd_pooling_layer = True )

Parameter

  • config (VisualBertConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.
  • add_pooling_layer (bool, opsional, default True) — Apakah akan menambahkan lapisan pooling

Model dapat berperilaku sebagai encoder (dengan hanya self-attention) mengikuti arsitektur yang dijelaskan dalam Attention is all you need oleh Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, dan Illia Polosukhin.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevisual_embeds: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.LongTensor] = Nonevisual_token_type_ids: typing.Optional[torch.LongTensor] = Noneimage_text_alignment: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu input ID?

  • attention_mask (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • position_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang [0, config.n_positions - 1].

    Apa itu ID posisi?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • visual_embeds (torch.Tensor dengan bentuk (batch_size, visual_seq_length, visual_embedding_dim), opsional) — Representasi tertanam dari input visual, umumnya diturunkan menggunakan detektor objek.
  • visual_attention_mask (torch.Tensor dengan bentuk (batch_size, visual_seq_length), opsional) — Mask untuk menghindari eksekusi attention pada visual embeddings. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • visual_token_type_ids (torch.LongTensor dengan bentuk (batch_size, visual_seq_length), opsional) — Indeks token segmen untuk menunjukkan bagian yang berbeda dari visual embeds.

    Apa itu token type ID? Para penulis VisualBERT mengatur visual_token_type_ids menjadi 1 untuk semua token.

  • image_text_alignment (torch.LongTensor dengan bentuk (batch_size, visual_seq_length, alignment_number), opsional) — Image-Text alignment digunakan untuk menentukan posisi ID dari visual embeddings.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

BaseModelOutputWithPooling atau tuple(torch.Tensor)

BaseModelOutputWithPooling atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (VisualBertConfig) dan input.

Metode forward dari VisualBertModel menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • last_hidden_state (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.

  • pooler_output (torch.Tensor dengan bentuk (batch_size, hidden_size)) — Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) setelah diproses lebih lanjut melalui lapisan yang digunakan untuk tugas pra-pelatihan tambahan. Misalnya, untuk keluarga model BERT, ini mengembalikan token klasifikasi setelah diproses melalui lapisan linear dan fungsi aktivasi tanh. Bobot lapisan linear dilatih dari tujuan prediksi kalimat berikutnya (klasifikasi) selama pra-pelatihan.

  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple(torch.Tensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

# Assumption: *get_visual_embeddings(image)* gets the visual embeddings of the image.
from transformers import AutoTokenizer, VisualBertModel
import torch

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisualBertModel.from_pretrained("uclanlp/visualbert-vqa-coco-pre")

inputs = tokenizer("The capital of France is Paris.", return_tensors="pt")
visual_embeds = get_visual_embeddings(image).unsqueeze(0)
visual_token_type_ids = torch.ones(visual_embeds.shape[:-1], dtype=torch.long)
visual_attention_mask = torch.ones(visual_embeds.shape[:-1], dtype=torch.float)

inputs.update(
    {
        "visual_embeds": visual_embeds,
        "visual_token_type_ids": visual_token_type_ids,
        "visual_attention_mask": visual_attention_mask,
    }
)

outputs = model(**inputs)

last_hidden_states = outputs.last_hidden_state

VisualBertForPreTraining

kelas transformers.VisualBertForPreTraining

< >

( config: VisualBertConfig )

Parameter

  • config (VisualBertConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.

Model VisualBert dengan dua head di bagian atas seperti yang dilakukan selama pretraining: head masked language modeling dan head sentence-image prediction (classification).

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevisual_embeds: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.LongTensor] = Nonevisual_token_type_ids: typing.Optional[torch.LongTensor] = Noneimage_text_alignment: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = Nonesentence_image_labels: typing.Optional[torch.LongTensor] = None**kwargs ) → VisualBertForPreTrainingOutput or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu input ID?

  • attention_mask (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • position_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang [0, config.n_positions - 1].

    Apa itu ID posisi?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • visual_embeds (torch.Tensor dengan bentuk (batch_size, visual_seq_length, visual_embedding_dim), opsional) — Representasi tertanam dari input visual, umumnya diturunkan menggunakan detektor objek.
  • visual_attention_mask (torch.Tensor dengan bentuk (batch_size, visual_seq_length), opsional) — Mask untuk menghindari eksekusi attention pada visual embeddings. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • visual_token_type_ids (torch.LongTensor dengan bentuk (batch_size, visual_seq_length), opsional) — Indeks token segmen untuk menunjukkan bagian yang berbeda dari visual embeds.

    Apa itu token type ID? Para penulis VisualBERT mengatur visual_token_type_ids menjadi 1 untuk semua token.

  • image_text_alignment (torch.LongTensor dengan bentuk (batch_size, visual_seq_length, alignment_number), opsional) — Image-Text alignment digunakan untuk menentukan posisi ID dari visual embeddings.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
  • labels (torch.LongTensor dengan bentuk (batch_size, total_sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa tersembunyi (masked language modeling). Indeks harus berada dalam [-100, 0, ..., config.vocab_size] (lihat docstring input_ids). Token dengan indeks yang disetel ke -100 diabaikan (disembunyikan), dan kerugian hanya dihitung untuk token dengan label dalam [0, ..., config.vocab_size]
  • sentence_image_labels (torch.LongTensor dengan bentuk (batch_size,), opsional) — Label untuk menghitung loss prediksi kalimat-gambar (klasifikasi). Input harus berupa pasangan urutan (lihat input_ids docstring) Indeks harus berada dalam rentang [0, 1]:
    • 0 menunjukkan bahwa urutan B adalah pasangan yang cocok dari urutan A untuk gambar yang diberikan,
    • 1 menunjukkan bahwa urutan B adalah urutan acak terhadap A untuk gambar yang diberikan.

Mengembalikan

VisualBertForPreTrainingOutput atau tuple(torch.Tensor)

VisualBertForPreTrainingOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (VisualBertConfig) dan input.

Metode forward dari VisualBertForPreTraining menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (*optional*, dikembalikan saat labels disediakan, torch.Tensor dengan bentuk (1,)) — Total loss sebagai jumlah dari masked language modeling loss dan sentence-image prediction (classification) loss.

  • prediction_logits (torch.Tensor dengan bentuk (batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).

  • seq_relationship_logits (torch.Tensor dengan bentuk (batch_size, 2)) — Skor prediksi dari kepala prediksi kalimat-gambar (klasifikasi) (skor kelanjutan True/False sebelum SoftMax).

  • hidden_states (tuple[torch.Tensor], opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor], opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

# Assumption: *get_visual_embeddings(image)* gets the visual embeddings of the image in the batch.
from transformers import AutoTokenizer, VisualBertForPreTraining

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisualBertForPreTraining.from_pretrained("uclanlp/visualbert-vqa-coco-pre")

inputs = tokenizer("The capital of France is [MASK].", return_tensors="pt")
visual_embeds = get_visual_embeddings(image).unsqueeze(0)
visual_token_type_ids = torch.ones(visual_embeds.shape[:-1], dtype=torch.long)
visual_attention_mask = torch.ones(visual_embeds.shape[:-1], dtype=torch.float)

inputs.update(
    {
        "visual_embeds": visual_embeds,
        "visual_token_type_ids": visual_token_type_ids,
        "visual_attention_mask": visual_attention_mask,
    }
)
max_length = inputs["input_ids"].shape[-1] + visual_embeds.shape[-2]
labels = tokenizer(
    "The capital of France is Paris.", return_tensors="pt", padding="max_length", max_length=max_length
)["input_ids"]
sentence_image_labels = torch.tensor(1).unsqueeze(0)  # Batch_size


outputs = model(**inputs, labels=labels, sentence_image_labels=sentence_image_labels)
loss = outputs.loss
prediction_logits = outputs.prediction_logits
seq_relationship_logits = outputs.seq_relationship_logits

VisualBertForQuestionAnswering

kelas transformers.VisualBertForQuestionAnswering

< >

( config: VisualBertConfig )

Parameter

  • config (VisualBertConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.

Model VisualBert dengan kepala klasifikasi/regresi di atasnya (sebuah dropout dan lapisan linear di atas output yang dipool) untuk VQA.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevisual_embeds: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.LongTensor] = Nonevisual_token_type_ids: typing.Optional[torch.LongTensor] = Noneimage_text_alignment: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu input ID?

  • attention_mask (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • position_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang [0, config.n_positions - 1].

    Apa itu ID posisi?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • visual_embeds (torch.Tensor dengan bentuk (batch_size, visual_seq_length, visual_embedding_dim), opsional) — Representasi tertanam dari input visual, umumnya diturunkan menggunakan detektor objek.
  • visual_attention_mask (torch.Tensor dengan bentuk (batch_size, visual_seq_length), opsional) — Mask untuk menghindari eksekusi attention pada visual embeddings. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • visual_token_type_ids (torch.LongTensor dengan bentuk (batch_size, visual_seq_length), opsional) — Indeks token segmen untuk menunjukkan bagian yang berbeda dari visual embeds.

    Apa itu token type ID? Para penulis VisualBERT mengatur visual_token_type_ids menjadi 1 untuk semua token.

  • image_text_alignment (torch.LongTensor dengan bentuk (batch_size, visual_seq_length, alignment_number), opsional) — Image-Text alignment digunakan untuk menentukan posisi ID dari visual embeddings.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
  • labels (torch.LongTensor dengan bentuk (batch_size, total_sequence_length), opsional) — Label untuk menghitung loss klasifikasi/regresi sekuens. Indeks harus berada dalam [0, ..., config.num_labels - 1]. KLDivLoss dihitung antara label dan logits yang dikembalikan.

Mengembalikan

SequenceClassifierOutput atau tuple(torch.Tensor)

SequenceClassifierOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (VisualBertConfig) dan input.

Metode forward dari VisualBertForQuestionAnswering menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.Tensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).

  • logits (torch.Tensor dengan bentuk (batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).

  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple(torch.Tensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

# Assumption: *get_visual_embeddings(image)* gets the visual embeddings of the image in the batch.
from transformers import AutoTokenizer, VisualBertForQuestionAnswering
import torch

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisualBertForQuestionAnswering.from_pretrained("uclanlp/visualbert-vqa")

text = "Who is eating the apple?"
inputs = tokenizer(text, return_tensors="pt")
visual_embeds = get_visual_embeddings(image).unsqueeze(0)
visual_token_type_ids = torch.ones(visual_embeds.shape[:-1], dtype=torch.long)
visual_attention_mask = torch.ones(visual_embeds.shape[:-1], dtype=torch.float)

inputs.update(
    {
        "visual_embeds": visual_embeds,
        "visual_token_type_ids": visual_token_type_ids,
        "visual_attention_mask": visual_attention_mask,
    }
)

labels = torch.tensor([[0.0, 1.0]]).unsqueeze(0)  # Batch size 1, Num labels 2

outputs = model(**inputs, labels=labels)
loss = outputs.loss
scores = outputs.logits

VisualBertForMultipleChoice

kelas transformers.VisualBertForMultipleChoice

< >

( config: VisualBertConfig )

Parameter

  • config (VisualBertConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.

Model Visual Bert dengan kepala klasifikasi pilihan ganda di atasnya (lapisan linear di atas output yang dipool dan softmax), misalnya untuk tugas RocStories/SWAG.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevisual_embeds: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.LongTensor] = Nonevisual_token_type_ids: typing.Optional[torch.LongTensor] = Noneimage_text_alignment: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → MultipleChoiceModelOutput or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, num_choices, sequence_length)) — Indeks token dari urutan input dalam kosakata.

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu input ID?

  • attention_mask (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.LongTensor dengan bentuk (batch_size, num_choices, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • position_ids (torch.LongTensor dengan bentuk (batch_size, num_choices, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang [0, config.max_position_embeddings - 1].

    Apa itu ID posisi?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, num_choices, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • visual_embeds (torch.Tensor dengan bentuk (batch_size, visual_seq_length, visual_embedding_dim), opsional) — Representasi tertanam dari input visual, umumnya diturunkan menggunakan detektor objek.
  • visual_attention_mask (torch.Tensor dengan bentuk (batch_size, visual_seq_length), opsional) — Mask untuk menghindari eksekusi attention pada visual embeddings. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • visual_token_type_ids (torch.LongTensor dengan bentuk (batch_size, visual_seq_length), opsional) — Indeks token segmen untuk menunjukkan bagian yang berbeda dari visual embeds.

    Apa itu token type ID? Para penulis VisualBERT mengatur visual_token_type_ids menjadi 1 untuk semua token.

  • image_text_alignment (torch.LongTensor dengan bentuk (batch_size, visual_seq_length, alignment_number), opsional) — Image-Text alignment digunakan untuk menentukan posisi ID dari visual embeddings.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
  • labels (torch.LongTensor dengan bentuk (batch_size,), opsional) — Label untuk menghitung loss klasifikasi pilihan ganda. Indeks harus berada dalam [0, ..., num_choices-1] di mana num_choices adalah ukuran dimensi kedua dari tensor input. (Lihat input_ids di atas)

Mengembalikan

MultipleChoiceModelOutput atau tuple(torch.Tensor)

Sebuah MultipleChoiceModelOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (VisualBertConfig) dan input.

Metode forward dari VisualBertForMultipleChoice menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.Tensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss klasifikasi.

  • logits (torch.Tensor dengan bentuk (batch_size, num_choices)) — num_choices adalah dimensi kedua dari tensor input. (lihat input_ids di atas).

    Skor klasifikasi (sebelum SoftMax).

  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple(torch.Tensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

# Assumption: *get_visual_embeddings(image)* gets the visual embeddings of the image in the batch.
from transformers import AutoTokenizer, VisualBertForMultipleChoice
import torch

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisualBertForMultipleChoice.from_pretrained("uclanlp/visualbert-vcr")

prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
choice0 = "It is eaten with a fork and a knife."
choice1 = "It is eaten while held in the hand."

visual_embeds = get_visual_embeddings(image)
# (batch_size, num_choices, visual_seq_length, visual_embedding_dim)
visual_embeds = visual_embeds.expand(1, 2, *visual_embeds.shape)
visual_token_type_ids = torch.ones(visual_embeds.shape[:-1], dtype=torch.long)
visual_attention_mask = torch.ones(visual_embeds.shape[:-1], dtype=torch.float)

labels = torch.tensor(0).unsqueeze(0)  # choice0 is correct (according to Wikipedia ;)), batch size 1

encoding = tokenizer([[prompt, prompt], [choice0, choice1]], return_tensors="pt", padding=True)
# batch size is 1
inputs_dict = {k: v.unsqueeze(0) for k, v in encoding.items()}
inputs_dict.update(
    {
        "visual_embeds": visual_embeds,
        "visual_attention_mask": visual_attention_mask,
        "visual_token_type_ids": visual_token_type_ids,
        "labels": labels,
    }
)
outputs = model(**inputs_dict)

loss = outputs.loss
logits = outputs.logits

VisualBertForVisualReasoning

kelas transformers.VisualBertForVisualReasoning

< >

( config: VisualBertConfig )

Parameter

  • config (VisualBertConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.

Model VisualBert dengan kepala klasifikasi urutan di atasnya (sebuah dropout dan lapisan linear di atas output yang dipool) untuk Penalaran Visual, misalnya untuk tugas NLVR.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevisual_embeds: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.LongTensor] = Nonevisual_token_type_ids: typing.Optional[torch.LongTensor] = Noneimage_text_alignment: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu input ID?

  • attention_mask (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • position_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang [0, config.n_positions - 1].

    Apa itu ID posisi?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • visual_embeds (torch.Tensor dengan bentuk (batch_size, visual_seq_length, visual_embedding_dim), opsional) — Representasi tertanam dari input visual, umumnya diturunkan menggunakan detektor objek.
  • visual_attention_mask (torch.Tensor dengan bentuk (batch_size, visual_seq_length), opsional) — Mask untuk menghindari eksekusi attention pada visual embeddings. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • visual_token_type_ids (torch.LongTensor dengan bentuk (batch_size, visual_seq_length), opsional) — Indeks token segmen untuk menunjukkan bagian yang berbeda dari visual embeds.

    Apa itu token type ID? Para penulis VisualBERT mengatur visual_token_type_ids menjadi 1 untuk semua token.

  • image_text_alignment (torch.LongTensor dengan bentuk (batch_size, visual_seq_length, alignment_number), opsional) — Image-Text alignment digunakan untuk menentukan posisi ID dari visual embeddings.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
  • labels (torch.LongTensor dengan bentuk (batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi sekuens. Indeks harus berada dalam [0, ..., config.num_labels - 1]. Loss klasifikasi (Cross-Entropy) dihitung terhadap label-label ini.

Mengembalikan

SequenceClassifierOutput atau tuple(torch.Tensor)

SequenceClassifierOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (VisualBertConfig) dan input.

Metode forward dari VisualBertForVisualReasoning menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.Tensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).

  • logits (torch.Tensor dengan bentuk (batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).

  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple(torch.Tensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

# Assumption: *get_visual_embeddings(image)* gets the visual embeddings of the image in the batch.
from transformers import AutoTokenizer, VisualBertForVisualReasoning
import torch

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisualBertForVisualReasoning.from_pretrained("uclanlp/visualbert-nlvr2")

text = "Who is eating the apple?"
inputs = tokenizer(text, return_tensors="pt")
visual_embeds = get_visual_embeddings(image).unsqueeze(0)
visual_token_type_ids = torch.ones(visual_embeds.shape[:-1], dtype=torch.long)
visual_attention_mask = torch.ones(visual_embeds.shape[:-1], dtype=torch.float)

inputs.update(
    {
        "visual_embeds": visual_embeds,
        "visual_token_type_ids": visual_token_type_ids,
        "visual_attention_mask": visual_attention_mask,
    }
)

labels = torch.tensor(1).unsqueeze(0)  # Batch size 1, Num choices 2

outputs = model(**inputs, labels=labels)
loss = outputs.loss
scores = outputs.logits

VisualBertForRegionToPhraseAlignment

kelas transformers.VisualBertForRegionToPhraseAlignment

< >

( config: VisualBertConfig )

Parameter

  • config (VisualBertConfig) — Kelas konfigurasi model yang berisi semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.

Model VisualBert dengan kepala Masked Language Modeling dan lapisan perhatian di atasnya untuk Region-to-Phrase Alignment misalnya untuk tugas Flickr30 Entities.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevisual_embeds: typing.Optional[torch.Tensor] = Nonevisual_attention_mask: typing.Optional[torch.LongTensor] = Nonevisual_token_type_ids: typing.Optional[torch.LongTensor] = Noneimage_text_alignment: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Noneregion_to_phrase_position: typing.Optional[torch.LongTensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu input ID?

  • attention_mask (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • position_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang [0, config.n_positions - 1].

    Apa itu ID posisi?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • visual_embeds (torch.Tensor dengan bentuk (batch_size, visual_seq_length, visual_embedding_dim), opsional) — Representasi tertanam dari input visual, umumnya diturunkan menggunakan detektor objek.
  • visual_attention_mask (torch.Tensor dengan bentuk (batch_size, visual_seq_length), opsional) — Mask untuk menghindari eksekusi attention pada visual embeddings. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • visual_token_type_ids (torch.LongTensor dengan bentuk (batch_size, visual_seq_length), opsional) — Indeks token segmen untuk menunjukkan bagian yang berbeda dari visual embeds.

    Apa itu token type ID? Para penulis VisualBERT mengatur visual_token_type_ids menjadi 1 untuk semua token.

  • image_text_alignment (torch.LongTensor dengan bentuk (batch_size, visual_seq_length, alignment_number), opsional) — Image-Text alignment digunakan untuk menentukan posisi ID dari visual embeddings.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
  • region_to_phrase_position (torch.LongTensor dengan bentuk (batch_size, total_sequence_length), opsional) — Posisi yang menunjukkan lokasi embedding gambar yang sesuai dengan token teks.
  • labels (torch.LongTensor dengan bentuk (batch_size, total_sequence_length, visual_sequence_length), opsional) — Label untuk menghitung kerugian masked language modeling. KLDivLoss dihitung terhadap label ini dan keluaran dari lapisan attention.

Mengembalikan

SequenceClassifierOutput atau tuple(torch.Tensor)

SequenceClassifierOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (VisualBertConfig) dan input.

Metode forward dari VisualBertForRegionToPhraseAlignment menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.Tensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).

  • logits (torch.Tensor dengan bentuk (batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).

  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple(torch.Tensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

# Assumption: *get_visual_embeddings(image)* gets the visual embeddings of the image in the batch.
from transformers import AutoTokenizer, VisualBertForRegionToPhraseAlignment
import torch

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = VisualBertForRegionToPhraseAlignment.from_pretrained("uclanlp/visualbert-vqa-coco-pre")

text = "Who is eating the apple?"
inputs = tokenizer(text, return_tensors="pt")
visual_embeds = get_visual_embeddings(image).unsqueeze(0)
visual_token_type_ids = torch.ones(visual_embeds.shape[:-1], dtype=torch.long)
visual_attention_mask = torch.ones(visual_embeds.shape[:-1], dtype=torch.float)
region_to_phrase_position = torch.ones((1, inputs["input_ids"].shape[-1] + visual_embeds.shape[-2]))

inputs.update(
    {
        "region_to_phrase_position": region_to_phrase_position,
        "visual_embeds": visual_embeds,
        "visual_token_type_ids": visual_token_type_ids,
        "visual_attention_mask": visual_attention_mask,
    }
)

labels = torch.ones(
    (1, inputs["input_ids"].shape[-1] + visual_embeds.shape[-2], visual_embeds.shape[-2])
)  # Batch size 1

outputs = model(**inputs, labels=labels)
loss = outputs.loss
scores = outputs.logits
Update on GitHub