Transformers documentation
LXMERT
Model ini dipublikasikan di HF papers pada 2019-08-20 dan disumbangkan ke Hugging Face Transformers pada 2020-11-16.
LXMERT
Ikhtisar
Model LXMERT diusulkan dalam LXMERT: Learning Cross-Modality Encoder Representations from Transformers oleh Hao Tan & Mohit Bansal. Ini adalah serangkaian encoder transformer bidireksional (satu untuk modalitas visual, satu untuk modalitas bahasa, dan satu lagi untuk menggabungkan kedua modalitas) yang dilatih sebelumnya menggunakan kombinasi dari masked language modeling, visual-language text alignment, ROI-feature regression, masked visual-attribute modeling, masked visual-object modeling, dan tujuan visual-question answering. Pra-pelatihan terdiri dari beberapa dataset multi-modal: MSCOCO, Visual-Genome + Visual-Genome Question Answering, VQA 2.0, dan GQA.
Abstrak dari makalah tersebut adalah sebagai berikut:
Penalaran visual-bahasa memerlukan pemahaman tentang konsep visual, semantik bahasa, dan, yang paling penting, keselarasan serta hubungan antara kedua modalitas ini. Oleh karena itu, kami mengusulkan kerangka kerja LXMERT (Learning Cross-Modality Encoder Representations from Transformers) untuk mempelajari koneksi visual-bahasa ini. Dalam LXMERT, kami membangun model Transformer berskala besar yang terdiri dari tiga encoder: encoder hubungan objek, encoder bahasa, dan encoder lintas-modalitas. Selanjutnya, untuk memberikan kemampuan pada model kami dalam menghubungkan semantik visual dan bahasa, kami melakukan pra-pelatihan model dengan sejumlah besar pasangan gambar dan kalimat, melalui lima tugas pra-pelatihan yang beragam dan representatif: pemodelan bahasa yang disamarkan, prediksi objek yang disamarkan (regresi fitur dan klasifikasi label), pencocokan lintas-modalitas, dan penjawab pertanyaan gambar. Tugas-tugas ini membantu dalam mempelajari hubungan intra-modalitas dan lintas-modalitas. Setelah penyesuaian halus dari parameter pra-pelatihan kami, model kami mencapai hasil state-of-the-art pada dua dataset penjawab pertanyaan visual (yaitu, VQA dan GQA). Kami juga menunjukkan kemampuan generalisasi model lintas-modalitas pra-pelatihan kami dengan menyesuaikannya ke tugas penalaran visual yang menantang, NLVR, dan meningkatkan hasil terbaik sebelumnya sebesar 22% absolut (dari 54% menjadi 76%). Terakhir, kami mendemonstrasikan studi ablas yang terperinci untuk membuktikan bahwa baik komponen model baru kami maupun strategi pra-pelatihan memberikan kontribusi signifikan pada hasil kuat kami; dan juga menyajikan beberapa visualisasi perhatian untuk encoder yang berbeda
Model ini disumbangkan oleh eltoto1219. Kode aslinya dapat ditemukan di sini.
Tips penggunaan
- Bounding box tidak perlu digunakan dalam embedding fitur visual; jenis fitur visual-spasial apa pun dapat berfungsi.
- Baik hidden states bahasa maupun hidden states visual yang dioutput oleh LXMERT melewati lapisan cross-modality, sehingga keduanya mengandung informasi dari kedua modalitas. Untuk mengakses modalitas yang hanya memperhatikan dirinya sendiri, pilih hidden states vision/bahasa dari input pertama dalam tuple.
- Perhatian encoder lintas-modalitas bidireksional hanya mengembalikan nilai perhatian ketika modalitas bahasa digunakan sebagai input dan modalitas visual digunakan sebagai vektor konteks. Selain itu, meskipun encoder lintas-modalitas berisi self-attention untuk masing-masing modalitas dan cross-attention, hanya cross-attention yang dikembalikan dan kedua output self-attention diabaikan.
Sumber daya
LxmertConfig
kelas transformers.LxmertConfig
< source >( 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 )
Parameter
- vocab_size (
int, opsional, default30522) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default768) — Dimensi dari representasi tersembunyi. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - num_qa_labels (
int, opsional, default 9500) — Ini mewakili total jumlah label question answering (QA) yang berbeda. Jika menggunakan lebih dari satu dataset dengan QA, pengguna perlu memperhitungkan total jumlah label yang dimiliki oleh semua dataset tersebut secara keseluruhan. - num_object_labels (
int, opsional, default 1600) — Ini mewakili total jumlah objek unik secara semantik yang dapat diklasifikasikan oleh lxmert sebagai tempat asal fitur objek yang telah dipooling. - num_attr_labels (
int, opsional, default 400) — Ini mewakili total jumlah atribut unik secara semantik yang dapat diklasifikasikan oleh lxmert sebagai dimiliki oleh fitur objek yang telah dipooling. - intermediate_size (
int, opsional, default3072) — Dimensi representasi MLP. - hidden_act (
str, opsional, defaultnyagelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - hidden_dropout_prob (
Union[float, int], opsional, default0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler. - attention_probs_dropout_prob (
Union[float, int], opsional, default0.1) — Rasio dropout untuk probabilitas perhatian. - max_position_embeddings (
int, opsional, default512) — Panjang maksimum urutan yang mungkin digunakan dengan model ini. - type_vocab_size (
int, opsional, default2) — Ukuran kosakata daritoken_type_ids. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - l_layers (
int, opsional, default 9) — Jumlah lapisan tersembunyi dalam encoder bahasa Transformer. - x_layers (
int, opsional, default 5) — Jumlah lapisan tersembunyi dalam encoder cross modality Transformer. - r_layers (
int, opsional, default 5) — Jumlah lapisan tersembunyi dalam encoder visual Transformer. - visual_feat_dim (
int, opsional, default 2048) — Ini mewakili dimensi terakhir dari fitur objek yang telah dipooling dan digunakan sebagai input untuk model, yang merepresentasikan ukuran dari masing-masing fitur objek itu sendiri. - visual_pos_dim (
int, opsional, default 4) — Ini mewakili jumlah fitur spasial yang dicampurkan ke dalam fitur visual. Default diatur ke 4 karena umumnya ini mewakili lokasi kotak pembatas. yaitu, (x, y, width, height) - visual_loss_normalizer (
float, opsional, default 6.67) — Ini mewakili faktor penskalaan yang dikalikan dengan setiap visual loss jika, selama pretraining, Anda memutuskan untuk melatih dengan beberapa tujuan loss berbasis visi. - task_matched (
bool, opsional, defaultTrue) — Tugas ini digunakan untuk pencocokan kalimat-gambar. Jika kalimat secara benar menggambarkan gambar, labelnya akan bernilai 1. Jika kalimat tidak secara benar menggambarkan gambar, labelnya akan bernilai 0. - task_mask_lm (
bool, opsional, defaultTrue) — Apakah akan menambahkan masked language modeling (seperti yang digunakan dalam model pra-pelatihan seperti BERT) ke dalam tujuan loss. - task_obj_predict (
bool, opsional, defaultTrue) — Apakah akan menambahkan prediksi objek, prediksi atribut, dan regresi fitur ke dalam tujuan loss. - task_qa (
bool, opsional, defaultTrue) — Apakah akan menambahkan loss question-answering ke dalam objective - visual_obj_loss (
bool, opsional, defaultTrue) — Apakah akan menghitung tujuan kerugian prediksi objek - visual_attr_loss (
bool, opsional, defaultTrue) — Apakah akan menghitung tujuan kerugian prediksi atribut - visual_feat_loss (
bool, opsional, defaultTrue) — Apakah akan menghitung tujuan kerugian regresi fitur - pad_token_id (
int, opsional) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
Union[int, list[int]], opsional) — ID token yang digunakan untuk akhir aliran dalam kosakata. - tie_word_embeddings (
bool, opsional, defaultTrue) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari LxmertModel. Kelas ini digunakan untuk membuat instans model Lxmert sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari unc-nlp/lxmert-base-uncased
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
LxmertTokenizer
kelas transformers.BertTokenizer
< source >( 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 )
Parameter
- vocab (
strataudict[str, int], opsional) — Kamus kosakata kustom. Jika tidak disediakan, kosakata dimuat darivocab_file. - do_lower_case (
bool, opsional, defaultTrue) — Apakah akan mengubah input menjadi huruf kecil saat melakukan tokenisasi. - unk_token (
str, opsional, default"[UNK]") — Token yang tidak diketahui. Token yang tidak ada dalam kosakata tidak dapat dikonversi menjadi ID dan akan diset sebagai token ini sebagai gantinya. - sep_token (
str, opsional, default"[SEP]") — Token pemisah, yang digunakan saat membangun urutan dari beberapa urutan, misalnya dua urutan untuk klasifikasi urutan atau untuk teks dan pertanyaan untuk penjawaban pertanyaan. Token ini juga digunakan sebagai token terakhir dari urutan yang dibangun dengan token khusus. - pad_token (
str, opsional, defaultnya"[PAD]") — Token yang digunakan untuk padding, misalnya saat membatching urutan dengan panjang yang berbeda. - cls_token (
str, opsional, default"[CLS]") — Token klasifikator yang digunakan saat melakukan klasifikasi sekuens (klasifikasi seluruh sekuens, bukan klasifikasi per-token). Token ini merupakan token pertama dari sekuens ketika dibangun dengan token khusus. - mask_token (
str, opsional, default"[MASK]") — Token yang digunakan untuk memask nilai. Ini adalah token yang digunakan saat melatih model ini dengan masked language modeling. Ini adalah token yang akan diprediksi oleh model. - tokenize_chinese_chars (
bool, opsional, defaultTrue) — Apakah akan melakukan tokenisasi karakter Tionghoa. - strip_accents (
bool, opsional) — Apakah akan menghapus semua aksen. Jika opsi ini tidak ditentukan, maka nilainya akan ditentukan oleh nilailowercase(seperti pada BERT asli).
Konstruksi tokenizer BERT (didukung oleh pustaka tokenizers HuggingFace). Berbasis pada WordPiece.
Tokenizer ini mewarisi dari TokenizersBackend yang berisi sebagian besar metode utama. Pengguna harus merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.
Output spesifik Lxmert
kelas transformers.models.lxmert.modeling_lxmert.LxmertModelOutput
< source >( language_output: typing.Optional[torch.FloatTensor] = Nonevision_output: typing.Optional[torch.FloatTensor] = Nonepooled_output: typing.Optional[torch.FloatTensor] = Nonelanguage_hidden_states: tuple[torch.FloatTensor] | None = Nonevision_hidden_states: tuple[torch.FloatTensor] | None = Nonelanguage_attentions: tuple[torch.FloatTensor] | None = Nonevision_attentions: tuple[torch.FloatTensor] | None = Nonecross_encoder_attentions: tuple[torch.FloatTensor] | None = None )
Parameter
- language_output (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir dari encoder bahasa. - vision_output (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir dari visual encoder. - pooled_output (
torch.FloatTensordengan bentuk(batch_size, hidden_size)) — Hidden-state dari lapisan terakhir untuk token pertama dalam urutan (token klasifikasi, CLS) yang kemudian diproses oleh lapisan Linear dan fungsi aktivasi Tanh. Linear - language_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - vision_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - cross_encoder_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
Output Lxmert yang berisi last hidden states, pooled outputs, dan probabilitas perhatian untuk encoder bahasa, visual, dan cross-modality. (catatan: encoder visual dalam Lxmert disebut sebagai encoder “relation-ship”)
kelas transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput
< source >( loss: typing.Optional[torch.FloatTensor] = Noneprediction_logits: typing.Optional[torch.FloatTensor] = Nonecross_relationship_score: typing.Optional[torch.FloatTensor] = Nonequestion_answering_score: typing.Optional[torch.FloatTensor] = Nonelanguage_hidden_states: tuple[torch.FloatTensor] | None = Nonevision_hidden_states: tuple[torch.FloatTensor] | None = Nonelanguage_attentions: tuple[torch.FloatTensor] | None = Nonevision_attentions: tuple[torch.FloatTensor] | None = Nonecross_encoder_attentions: tuple[torch.FloatTensor] | None = None )
Parameter
- loss (
*optional*, returned whenlabelsis provided,torch.FloatTensorof shape(1,)) — Total loss sebagai jumlah dari masked language modeling loss dan next sequence prediction (classification) loss. - prediction_logits (
torch.FloatTensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax). - cross_relationship_score (
torch.FloatTensordengan bentuk(batch_size, 2)) — Skor prediksi dari tujuan pencocokan teks (head klasifikasi) (skor kelanjutan True/False sebelum SoftMax). - question_answering_score (
torch.FloatTensordengan bentuk(batch_size, n_qa_answers)) — Skor prediksi untuk tujuan question answering (klasifikasi). - language_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - vision_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - cross_encoder_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
Jenis output dari LxmertForPreTraining.
kelas transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput
< source >( loss: typing.Optional[torch.FloatTensor] = Nonequestion_answering_score: typing.Optional[torch.FloatTensor] = Nonelanguage_hidden_states: tuple[torch.FloatTensor] | None = Nonevision_hidden_states: tuple[torch.FloatTensor] | None = Nonelanguage_attentions: tuple[torch.FloatTensor] | None = Nonevision_attentions: tuple[torch.FloatTensor] | None = Nonecross_encoder_attentions: tuple[torch.FloatTensor] | None = None )
Parameter
- loss (
*optional*, returned whenlabelsis provided,torch.FloatTensorof shape(1,)) — Total loss as the sum of the masked language modeling loss and the next sequence prediction (classification) loss.k. - question_answering_score (
torch.FloatTensordengan bentuk(batch_size, n_qa_answers), opsional) — Skor prediksi untuk tujuan question answering (klasifikasi). - language_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - vision_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - cross_encoder_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
Jenis output dari LxmertForQuestionAnswering.
LxmertModel
kelas transformers.LxmertModel
< source >( config: LxmertConfig )
Parameter
- config (LxmertConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Lxmert polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
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
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.FloatTensor] = Nonevisual_pos: typing.Optional[torch.FloatTensor] = Noneattention_mask: typing.Optional[torch.FloatTensor] = Nonevisual_attention_mask: typing.Optional[torch.FloatTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertModelOutput or tuple(torch.FloatTensor)
Parameter
- input_ids (
torch.LongTensordengan 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.
- visual_feats (
torch.FloatTensordengan bentuk(batch_size, num_visual_features, visual_feat_dim)) — Input ini mewakili fitur visual. Mereka adalah fitur objek yang di-ROI pool dari bounding box menggunakan model faster-RCNN)Saat ini, hal-hal ini belum disediakan oleh pustaka transformers.
- visual_pos (
torch.FloatTensordengan bentuk(batch_size, num_visual_features, visual_pos_dim)) — Input ini mewakili fitur spasial yang sesuai dengan fitur visual relatifnya (melalui indeks). Model LXMERT yang telah dilatih sebelumnya mengharapkan fitur spasial ini berupa kotak pembatas (bounding box) yang dinormalisasi pada skala 0 hinggaSaat ini, hal-hal ini belum disediakan oleh pustaka transformers.
- attention_mask (
torch.FloatTensordengan 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.
- visual_attention_mask (
torch.FloatTensordengan 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.
- token_type_ids (
torch.LongTensordengan 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.
- inputs_embeds (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - output_attentions (
bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
LxmertModelOutput atau tuple(torch.FloatTensor)
A LxmertModelOutput atau tuple dari
torch.FloatTensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (LxmertConfig) dan input.
Metode forward dari LxmertModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- language_output (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada output dari lapisan terakhir encoder bahasa. - vision_output (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir dari visual encoder. - pooled_output (
torch.FloatTensordengan bentuk(batch_size, hidden_size)) — hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi, CLS) yang kemudian diproses oleh lapisan Linear dan fungsi aktivasi Tanh. Linear - language_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(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 self-attention. - vision_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - cross_encoder_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
LxmertForPreTraining
kelas transformers.LxmertForPreTraining
< source >( config: LxmertConfig )
Parameter
- config (LxmertConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Lxmert dengan head pretraining yang ditentukan di atasnya.
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
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.FloatTensor] = Nonevisual_pos: typing.Optional[torch.FloatTensor] = Noneattention_mask: typing.Optional[torch.FloatTensor] = Nonevisual_attention_mask: typing.Optional[torch.FloatTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneobj_labels: dict[str, tuple[torch.FloatTensor, torch.FloatTensor]] | 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.FloatTensor)
Parameter
- input_ids (
torch.LongTensordengan 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.
- visual_feats (
torch.FloatTensordengan bentuk(batch_size, num_visual_features, visual_feat_dim)) — Input ini mewakili fitur visual. Mereka adalah fitur objek yang di-ROI pool dari bounding box menggunakan model faster-RCNN)Saat ini, hal-hal ini belum disediakan oleh pustaka transformers.
- visual_pos (
torch.FloatTensordengan bentuk(batch_size, num_visual_features, visual_pos_dim)) — Input ini mewakili fitur spasial yang sesuai dengan fitur visual relatifnya (melalui indeks). Model LXMERT yang telah dilatih sebelumnya mengharapkan fitur spasial ini berupa kotak pembatas (bounding box) yang dinormalisasi pada skala 0 hinggaSaat ini, hal-hal ini belum disediakan oleh pustaka transformers.
- attention_mask (
torch.FloatTensordengan 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.
- visual_attention_mask (
torch.FloatTensordengan 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.
- token_type_ids (
torch.LongTensordengan 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.
- inputs_embeds (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling). Indeks harus berada dalam[-100, 0, ..., config.vocab_size](lihat docstringinput_ids). Token dengan indeks yang disetel ke-100diabaikan (disamarkan), kerugian hanya dihitung untuk token dengan label dalam[0, ..., config.vocab_size] - obj_labels (
dict[Str -- tuple[Torch.FloatTensor, Torch.FloatTensor]], opsional): setiap kunci dinamai sesuai dengan masing-masing visual losses dan setiap elemen tuple memiliki bentuk(batch_size, num_features)dan(batch_size, num_features, visual_feature_dim)untuk masing-masing label id dan skor label - matched_label (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi apakah teks input cocok dengan gambar atau tidak. Input harus berupa pasangan sequence (lihatinput_idsdocstring) Indeks harus berada dalam rentang[0, 1]:- 0 menunjukkan bahwa kalimat tidak cocok dengan gambar,
- 1 menunjukkan bahwa kalimat tersebut cocok dengan gambar.
- ans (
Torch.Tensordengan bentuk(batch_size), opsional) — representasi one hot dari jawaban yang benar opsional - output_attentions (
bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
LxmertForPreTrainingOutput atau tuple(torch.FloatTensor)
A LxmertForPreTrainingOutput atau tuple dari
torch.FloatTensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (LxmertConfig) dan input.
Metode forward dari LxmertForPreTraining menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- loss (
*optional*, returned whenlabelsis provided,torch.FloatTensorof shape(1,)) — Total loss sebagai jumlah dari masked language modeling loss dan next sequence prediction (klasifikasi) loss. - prediction_logits (
torch.FloatTensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax). - cross_relationship_score (
torch.FloatTensordengan bentuk(batch_size, 2)) — Skor prediksi dari tujuan pencocokan teks (head klasifikasi) (skor kelanjutan True/False sebelum SoftMax). - question_answering_score (
torch.FloatTensordengan bentuk(batch_size, n_qa_answers)) — Skor prediksi untuk tujuan question answering (klasifikasi). - language_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(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 self-attention. - vision_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - cross_encoder_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
LxmertForQuestionAnswering
kelas transformers.LxmertForQuestionAnswering
< source >( config: LxmertConfig )
Parameter
- config (LxmertConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Lxmert dengan kepala visual-answering di atasnya untuk tugas QA turunan
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
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonevisual_feats: typing.Optional[torch.FloatTensor] = Nonevisual_pos: typing.Optional[torch.FloatTensor] = Noneattention_mask: typing.Optional[torch.FloatTensor] = Nonevisual_attention_mask: typing.Optional[torch.FloatTensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LxmertForQuestionAnsweringOutput or tuple(torch.FloatTensor)
Parameter
- input_ids (
torch.LongTensordengan 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.
- visual_feats (
torch.FloatTensordengan bentuk(batch_size, num_visual_features, visual_feat_dim)) — Input ini mewakili fitur visual. Mereka adalah fitur objek yang di-ROI pool dari bounding box menggunakan model faster-RCNN)Saat ini, hal-hal ini belum disediakan oleh pustaka transformers.
- visual_pos (
torch.FloatTensordengan bentuk(batch_size, num_visual_features, visual_pos_dim)) — Input ini mewakili fitur spasial yang sesuai dengan fitur visual relatifnya (melalui indeks). Model LXMERT yang telah dilatih sebelumnya mengharapkan fitur spasial ini berupa kotak pembatas (bounding box) yang dinormalisasi pada skala 0 hinggaSaat ini, hal-hal ini belum disediakan oleh pustaka transformers.
- attention_mask (
torch.FloatTensordengan 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.
- visual_attention_mask (
torch.FloatTensordengan 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.
- token_type_ids (
torch.LongTensordengan 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.
- inputs_embeds (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
Torch.Tensordengan bentuk(batch_size), opsional) — Representasi one-hot dari jawaban yang benar - output_attentions (
bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
LxmertForQuestionAnsweringOutput atau tuple(torch.FloatTensor)
A LxmertForQuestionAnsweringOutput atau tuple dari
torch.FloatTensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (LxmertConfig) dan input.
Metode forward dari LxmertForQuestionAnswering menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- loss (
*optional*, returned whenlabelsis provided,torch.FloatTensorof shape(1,)) — Total loss as the sum of the masked language modeling loss and the next sequence prediction (classification) loss.k. - question_answering_score (
torch.FloatTensordengan bentuk(batch_size, n_qa_answers), opsional) — Skor prediksi untuk tujuan question answering (klasifikasi). - language_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - vision_hidden_states (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(satu untuk fitur input + satu untuk output dari setiap lapisan cross-modality) dengan bentuk(batch_size, sequence_length, hidden_size). - language_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(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 self-attention. - vision_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention. - cross_encoder_attentions (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
Contoh:
>>> 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)
...