Transformers documentation
DPR
Model ini dipublikasikan di HF papers pada 2020-04-10 dan disumbangkan ke Hugging Face Transformers pada 2020-11-16.
DPR
Ikhtisar
Dense Passage Retrieval (DPR) adalah seperangkat alat dan model untuk penelitian open-domain Q&A terkini. Diperkenalkan dalam Dense Passage Retrieval for Open-Domain Question Answering oleh Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen, Wen-tau Yih.
Abstrak dari makalah tersebut adalah sebagai berikut:
Jawaban pertanyaan domain terbuka bergantung pada pengambilan cuplikan yang efisien untuk memilih konteks kandidat, di mana model ruang vektor sparse tradisional, seperti TF-IDF atau BM25, adalah metode de facto. Dalam karya ini, kami menunjukkan bahwa pengambilan dapat diimplementasikan secara praktis hanya menggunakan representasi padat, di mana embedding dipelajari dari sejumlah kecil pertanyaan dan cuplikan oleh kerangka kerja dual-encoder yang sederhana. Ketika dievaluasi pada berbagai dataset QA domain terbuka, retriever padat kami melampaui sistem Lucene-BM25 yang kuat secara signifikan sebesar 9%-19% absolut dalam hal akurasi pengambilan 20 cuplikan teratas, dan membantu sistem QA end-to-end kami mencapai state-of-the-art baru pada beberapa benchmark QA domain terbuka.
Model ini disumbangkan oleh lhoestq. Kode aslinya dapat ditemukan di sini.
Tips penggunaan
DPR terdiri dari tiga model:
- Encoder pertanyaan: mengkodekan pertanyaan sebagai vektor
- Pengkode konteks: mengkodekan konteks sebagai vektor
- Reader: mengekstrak jawaban dari pertanyaan di dalam konteks yang diambil, beserta skor relevansi (tinggi jika span yang disimpulkan benar-benar menjawab pertanyaan).
DPRConfig
kelas transformers.DPRConfig
< 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_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-12pad_token_id: int | None = 0bos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Noneprojection_dim: int = 0is_decoder: bool = Falseadd_cross_attention: bool = False )
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_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - 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. - layer_norm_eps (
float, opsional, defaultnya1e-12) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - pad_token_id (
int, opsional, default0) — 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. - projection_dim (
int, opsional, defaultnya0) — Dimensi dari lapisan proyeksi teks dan visi. - is_decoder (
bool, opsional, defaultFalse) — Apakah model digunakan sebagai decoder atau tidak. JikaFalse, model digunakan sebagai encoder. - add_cross_attention (
bool, opsional, defaultFalse) — Apakah lapisan cross-attention harus ditambahkan ke model.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi DPRQuestionEncoder. Kelas ini digunakan untuk membuat model Dpr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi facebook/dpr-ctx_encoder-single-nq-base
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import DPRConfig, DPRContextEncoder
>>> # Initializing a DPR facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> configuration = DPRConfig()
>>> # Initializing a model (with random weights) from the facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> model = DPRContextEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configDPRContextEncoderTokenizer
Konstruksi tokenizer DPRContextEncoder.
DPRContextEncoderTokenizer identik dengan BertTokenizer dan menjalankan tokenisasi end-to-end: pemisahan tanda baca dan wordpiece.
Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.
DPRContextEncoderTokenizerFast
kelas transformers.DPRContextEncoderTokenizerFast
< 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 )
Konstruksi tokenizer “fast” DPRContextEncoder (didukung oleh pustaka tokenizers dari HuggingFace).
DPRContextEncoderTokenizerFast identik dengan BertTokenizer dan menjalankan tokenisasi end-to-end: pemisahan tanda baca dan wordpiece.
Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.
DPRQuestionEncoderTokenizer
Membangun tokenizer DPRQuestionEncoder.
DPRQuestionEncoderTokenizer identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece.
Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.
DPRQuestionEncoderTokenizerFast
kelas transformers.DPRQuestionEncoderTokenizerFast
< 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 )
Membuat tokenizer DPRQuestionEncoder “cepat” (didukung oleh pustaka tokenizers dari HuggingFace).
DPRQuestionEncoderTokenizerFast identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece.
Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.
DPRReaderTokenizer
kelas transformers.DPRReaderTokenizer
< source >( *argsdo_lower_case = False**kwargs ) → dict[str, list[list[int]]]
Parameter
- questions (
strataulist[str]) — Pertanyaan yang akan di-encode. Anda dapat menentukan satu pertanyaan untuk banyak passage. Dalam kasus ini, pertanyaan akan diduplikasi seperti[questions] * n_passages. Sebaliknya, Anda harus menentukan sebanyak pertanyaan yang ada dititlesatautexts. - titles (
strataulist[str]) — Judul paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf. - texts (
strataulist[str]) — Teks paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf. - padding (
bool,stratau PaddingStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol padding. Menerima nilai-nilai berikut:Trueatau'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad'(default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- truncation (
bool,stratau TruncationStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol pemotongan. Menerima nilai-nilai berikut:Trueatau'longest_first': Memotong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini akan memotong per token, dengan menghapus satu token dari urutan terpanjang dalam pasangan jika sepasang urutan (atau batch pasangan) diberikan.'only_first': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan pertama dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.'only_second': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan kedua dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.Falseatau'do_not_truncate'(default): Tidak ada pemotongan (yaitu, dapat menghasilkan batch dengan panjang sekuens yang lebih besar dari ukuran input maksimum yang diizinkan model).
- max_length (
int, opsional) — Mengontrol panjang maksimum yang digunakan oleh salah satu parameter truncation/padding.Jika tidak disetel atau disetel ke
None, ini akan menggunakan panjang maksimum model yang telah didefinisikan sebelumnya jika panjang maksimum diperlukan oleh salah satu parameter truncation/padding. Jika model tidak memiliki panjang input maksimum yang spesifik (seperti XLNet), truncation/padding ke panjang maksimum akan dinonaktifkan. - return_tensors (
stratau TensorType, opsional) — Jika diset, akan mengembalikan tensor alih-alih daftar integer Python. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek Numpynp.ndarray.
- return_attention_mask (
bool, opsional) — Apakah akan mengembalikan attention mask. Jika tidak diatur, attention mask akan dikembalikan sesuai dengan nilai default tokenizer tertentu, yang ditentukan oleh atributreturn_outputs.
Mengembalikan
dict[str, list[list[int]]]
Kamus dengan kunci-kunci berikut:
input_ids: Daftar id token yang akan diberikan ke model.attention_mask: Daftar indeks yang menentukan token mana yang harus diperhatikan oleh model.
Konstruksi tokenizer DPRReader.
DPRReaderTokenizer hampir identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece. Perbedaannya adalah bahwa tokenizer ini memiliki tiga string input: question, titles, dan texts yang digabungkan untuk diberikan ke model DPRReader.
Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.
Kembalikan sebuah dictionary berisi token id dari string input dan informasi lain untuk diberikan ke .decode_best_spans.
Ini mengonversi string dari sebuah pertanyaan dan berbagai passage (judul dan teks) menjadi urutan ID (bilangan bulat),
menggunakan tokenizer dan vocabulary. Hasil input_ids adalah matriks berukuran (n_passages, sequence_length)
DPRReaderTokenizerFast
kelas transformers.DPRReaderTokenizerFast
< 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 ) → dict[str, list[list[int]]]
Parameter
- questions (
strataulist[str]) — Pertanyaan yang akan di-encode. Anda dapat menentukan satu pertanyaan untuk banyak passage. Dalam kasus ini, pertanyaan akan diduplikasi seperti[questions] * n_passages. Sebaliknya, Anda harus menentukan sebanyak pertanyaan yang ada dititlesatautexts. - titles (
strataulist[str]) — Judul paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf. - texts (
strataulist[str]) — Teks paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf. - padding (
bool,stratau PaddingStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol padding. Menerima nilai-nilai berikut:Trueatau'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad'(default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- truncation (
bool,stratau TruncationStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol pemotongan. Menerima nilai-nilai berikut:Trueatau'longest_first': Memotong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini akan memotong per token, dengan menghapus satu token dari urutan terpanjang dalam pasangan jika sepasang urutan (atau batch pasangan) diberikan.'only_first': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan pertama dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.'only_second': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan kedua dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.Falseatau'do_not_truncate'(default): Tidak ada pemotongan (yaitu, dapat menghasilkan batch dengan panjang sekuens yang lebih besar dari ukuran input maksimum yang diizinkan model).
- max_length (
int, opsional) — Mengontrol panjang maksimum yang digunakan oleh salah satu parameter truncation/padding.Jika tidak disetel atau disetel ke
None, ini akan menggunakan panjang maksimum model yang telah didefinisikan sebelumnya jika panjang maksimum diperlukan oleh salah satu parameter truncation/padding. Jika model tidak memiliki panjang input maksimum yang spesifik (seperti XLNet), truncation/padding ke panjang maksimum akan dinonaktifkan. - return_tensors (
stratau TensorType, opsional) — Jika diset, akan mengembalikan tensor alih-alih daftar integer Python. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek Numpynp.ndarray.
- return_attention_mask (
bool, opsional) — Apakah akan mengembalikan attention mask. Jika tidak diatur, attention mask akan dikembalikan sesuai dengan nilai default tokenizer tertentu, yang ditentukan oleh atributreturn_outputs.
Mengembalikan
dict[str, list[list[int]]]
Kamus dengan kunci-kunci berikut:
input_ids: Daftar id token yang akan diberikan ke model.attention_mask: Daftar indeks yang menentukan token mana yang harus diperhatikan oleh model.
Membuat tokenizer DPRReader “cepat” (didukung oleh pustaka tokenizers HuggingFace).
DPRReaderTokenizerFast hampir identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece. Perbedaannya adalah bahwa ia memiliki tiga string input: question, titles, dan texts yang digabungkan untuk diberikan ke model DPRReader.
Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.
Kembalikan sebuah dictionary berisi token id dari string input dan informasi lain untuk diberikan ke .decode_best_spans.
Ini mengonversi string dari sebuah pertanyaan dan berbagai passage (judul dan teks) menjadi urutan ID (bilangan bulat),
menggunakan tokenizer dan vocabulary. Hasil input_ids adalah matriks berukuran (n_passages, sequence_length) dengan format:
[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>
Output khusus DPR
kelas transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput
< source >( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Parameter
- pooler_output (
torch.Tensordengan bentuk(batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi konteks. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang diproses lebih lanjut oleh lapisan Linear. Output ini digunakan untuk menyematkan konteks untuk kueri tetangga terdekat dengan embeddings pertanyaan. - hidden_states (
tuple[torch.Tensor, ...], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output embeddings, jika model memiliki lapisan embedding, + satu untuk output 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 ketikaoutput_attentions=Truedilewatkan atau ketikaconfig.output_attentions=True) — Tuple daritorch.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).
Kelas untuk output dari DPRQuestionEncoder.
kelas transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput
< source >( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Parameter
- pooler_output (
torch.Tensordengan bentuk(batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi pertanyaan. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang kemudian diproses oleh lapisan Linear. Output ini digunakan untuk menyematkan pertanyaan untuk kueri tetangga terdekat dengan embeddings konteks. - hidden_states (
tuple[torch.Tensor, ...], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output embeddings, jika model memiliki lapisan embedding, + satu untuk output 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 ketikaoutput_attentions=Truedilewatkan atau ketikaconfig.output_attentions=True) — Tuple daritorch.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).
Kelas untuk output dari DPRQuestionEncoder.
kelas transformers.DPRReaderOutput
< source >( start_logits: Tensorend_logits: typing.Optional[torch.Tensor] = Nonerelevance_logits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Parameter
- start_logits (
torch.Tensordengan bentuk(n_passages, sequence_length)) — Logits dari indeks awal span untuk setiap passage. - end_logits (
torch.Tensordengan bentuk(n_passages, sequence_length)) — Logits dari indeks akhir span untuk setiap passage. - relevance_logits (
torch.Tensordengan bentuk(n_passages, )) — Output dari klasifikator QA dari DPRReader yang sesuai dengan skor setiap passage untuk menjawab pertanyaan, dibandingkan dengan semua passage lainnya. - hidden_states (
tuple[torch.Tensor, ...], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output embeddings, jika model memiliki lapisan embedding, + satu untuk output 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 ketikaoutput_attentions=Truedilewatkan atau ketikaconfig.output_attentions=True) — Tuple daritorch.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).
Kelas untuk output dari DPRQuestionEncoder.
DPRContextEncoder
kelas transformers.DPRContextEncoder
< source >( config: DPRConfig )
Parameter
- config (DPRConfig) — 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.
Transformer DPRContextEncoder polos yang menghasilkan keluaran pooler sebagai representasi konteks.
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.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRContextEncoderOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length)) — Indeks token dari urutan input dalam kosakata. Untuk sesuai dengan pra-pelatihan, urutan input DPR harus diformat dengan token [CLS] dan [SEP] sebagai berikut:(a) Untuk pasangan urutan (misalnya, pasangan judul+teks):
- attention_mask (
torch.Tensordengan 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.Tensordengan 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.Tensordengan 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
DPRContextEncoderOutput atau tuple(torch.Tensor)
A DPRContextEncoderOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (DPRConfig) dan input.
Metode forward dari DPRContextEncoder 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.
pooler_output (
torch.Tensordengan bentuk(batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi konteks. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang diproses lebih lanjut oleh lapisan Linear. Output ini digunakan untuk menyematkan konteks untuk kueri tetangga terdekat dengan embeddings pertanyaan.hidden_states (
tuple[torch.Tensor, ...], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.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 saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.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).
tokens: [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
token_type_ids: 0 0 0 0 0 0 0 0 1 1 1 1 1 1(b) Untuk urutan tunggal (misalnya untuk sebuah pertanyaan):
tokens: [CLS] the dog is hairy . [SEP]
token_type_ids: 0 0 0 0 0 0 0DPR adalah model dengan penanam posisi absolut sehingga biasanya disarankan untuk mengisi input di sisi kanan, bukan di sisi kiri.
Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
Contoh:
>>> from transformers import DPRContextEncoder, DPRContextEncoderTokenizer
>>> tokenizer = DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> model = DPRContextEncoder.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_outputDPRQuestionEncoder
kelas transformers.DPRQuestionEncoder
< source >( config: DPRConfig )
Parameter
- config (DPRConfig) — 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.
Transformer DPRQuestionEncoder polos yang menghasilkan keluaran pooler sebagai representasi pertanyaan.
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.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRQuestionEncoderOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length)) — Indeks token dari urutan input dalam kosakata. Untuk sesuai dengan pra-pelatihan, urutan input DPR harus diformat dengan token [CLS] dan [SEP] sebagai berikut:(a) Untuk pasangan urutan (misalnya, pasangan judul+teks):
- attention_mask (
torch.Tensordengan 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.Tensordengan 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.Tensordengan 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
DPRQuestionEncoderOutput atau tuple(torch.Tensor)
A DPRQuestionEncoderOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (DPRConfig) dan input.
Metode forward dari DPRQuestionEncoder 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.
pooler_output (
torch.Tensordengan bentuk(batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi pertanyaan. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang diproses lebih lanjut oleh lapisan Linear. Output ini digunakan untuk menyematkan pertanyaan untuk kueri tetangga terdekat dengan embeddings konteks.hidden_states (
tuple[torch.Tensor, ...], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.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 saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.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).
tokens: [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
token_type_ids: 0 0 0 0 0 0 0 0 1 1 1 1 1 1(b) Untuk urutan tunggal (misalnya untuk sebuah pertanyaan):
tokens: [CLS] the dog is hairy . [SEP]
token_type_ids: 0 0 0 0 0 0 0DPR adalah model dengan penanam posisi absolut sehingga biasanya disarankan untuk mengisi input di sisi kanan, bukan di sisi kiri.
Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
Contoh:
>>> from transformers import DPRQuestionEncoder, DPRQuestionEncoderTokenizer
>>> tokenizer = DPRQuestionEncoderTokenizer.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> model = DPRQuestionEncoder.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_outputDPRReader
kelas transformers.DPRReader
< source >( config: DPRConfig )
Parameter
- config (DPRConfig) — 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.
Transformer DPRReader polos yang menghasilkan prediksi span.
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.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRReaderOutput or tuple(torch.Tensor)
Parameter
- input_ids (
tuple[torch.LongTensor]dengan bentuk(n_passages, sequence_length)) — Indeks token urutan input dalam kosakata. Harus berupa triplet urutan dengan 1) pertanyaan dan 2) judul passage serta 3) teks passage. Untuk sesuai dengan pra-pelatihan, DPRinput_idsurutan harus diformat dengan [CLS] dan [SEP] dengan format:[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>DPR adalah model dengan penanam posisi absolut sehingga biasanya disarankan untuk mengisi input di sisi kanan, bukan di sisi kiri.
Indeks dapat diperoleh menggunakan DPRReaderTokenizer. Lihat dokumentasi kelas ini untuk detail lebih lanjut.
- attention_mask (
torch.Tensordengan 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.
- inputs_embeds (
torch.Tensordengan bentuk(n_passages, 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
DPRReaderOutput atau tuple(torch.Tensor)
A DPRReaderOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (DPRConfig) dan input.
Metode forward dari DPRReader 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.
start_logits (
torch.Tensordengan bentuk(n_passages, sequence_length)) — Logits dari indeks awal span untuk setiap passage.end_logits (
torch.Tensordengan bentuk(n_passages, sequence_length)) — Logits dari indeks akhir span untuk setiap passage.relevance_logits (
torch.Tensordengan bentuk(n_passages, )) — Output dari klasifikator QA DPRReader yang sesuai dengan skor setiap passage untuk menjawab pertanyaan, dibandingkan dengan semua passage lainnya.hidden_states (
tuple[torch.Tensor, ...], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.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 saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.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:
>>> from transformers import DPRReader, DPRReaderTokenizer
>>> tokenizer = DPRReaderTokenizer.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> model = DPRReader.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> encoded_inputs = tokenizer(
... questions=["What is love ?"],
... titles=["Haddaway"],
... texts=["'What Is Love' is a song recorded by the artist Haddaway"],
... return_tensors="pt",
... )
>>> outputs = model(**encoded_inputs)
>>> start_logits = outputs.start_logits
>>> end_logits = outputs.end_logits
>>> relevance_logits = outputs.relevance_logits