Transformers documentation
DPR
Bu model 2020-04-10 tarihinde HF papers'ta yayımlandı ve 2020-11-16 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
DPR
Genel Bakış
Dense Passage Retrieval (DPR), son teknoloji açık alan Q&A araştırmaları için bir araç ve model setidir. Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen ve Wen-tau Yih tarafından Dense Passage Retrieval for Open-Domain Question Answering makalesinde tanıtılmıştır.
Makalenin özeti aşağıdaki gibidir:
Açık alan soru-cevap, aday bağlamları seçmek için verimli pasaj geri getirmeye dayanır; bu alanda TF-IDF veya BM25 gibi geleneksel seyrek vektör uzayı modelleri fiili standart yöntemdir. Bu çalışmada, gömme (embedding) değerlerinin basit bir çift kodlayıcı (dual-encoder) çerçevesi kullanılarak az sayıda soru ve pasajdan öğrenildiği, geri getirmenin yalnızca yoğun (dense) temsillerle pratik olarak uygulanabileceğini gösteriyoruz. Geniş bir açık alan soru-cevap veri kümesi yelpazesinde değerlendirildiğinde, yoğun geri getiricimiz, üst-20 (top-20) pasaj geri getirme doğruluğu açısından güçlü bir Lucene-BM25 sistemini büyük ölçüde %9-%19 mutlak farkla geride bırakmakta ve uçtan uca soru-cevap sistemimizin birden fazla açık alan soru-cevap benchmark'ında yeni en iyi sonuçları (state-of-the-art) elde etmesine yardımcı olmaktadır.
Bu model lhoestq tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kullanım ipuçları
DPR üç modelden oluşur:
- Soru kodlayıcı: Soruları vektör olarak kodlayın
- Bağlam kodlayıcı: bağlamları vektör olarak kodlayın
- Okuyucu: retrieve edilen bağlamlar içindeki soruların yanıtlarını, bir uygunluk puanıyla birlikte çıkarır (çıkarılan aralık soruyu gerçekten yanıtlıyorsa puan yüksek olur).
DPRConfig
sınıf 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 )
Parametreler
- vocab_size (
int, isteğe bağlı, varsayılan30522) — Modelin sözlük boyutu.input_idstarafından temsil edilebilecek farklı token sayısını tanımlar. - hidden_size (
int, isteğe bağlı, varsayılan768) — Gizli temsillerin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan12) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - intermediate_size (
int, isteğe bağlı, varsayılan3072) — MLP temsillerinin boyutu. - hidden_act (
str, isteğe bağlı, varsayılangelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin,"gelu","relu","silu"vb. - hidden_dropout_prob (
Union[float, int], isteğe bağlı, varsayılan0.1) — Gömme, kodlayıcı ve havuzlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı. - attention_probs_dropout_prob (
Union[float, int], isteğe bağlı, varsayılan0.1) — Dikkat olasılıkları için dropout oranı. - max_position_embeddings (
int, isteğe bağlı, varsayılan512) — Bu modelin kullanılabileceği en uzun dizi uzunluğu. - type_vocab_size (
int, isteğe bağlı, varsayılan2) —token_type_idsiçin sözlük boyutu. - initializer_range (
float, isteğe bağlı, varsayılan0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması. - layer_norm_eps (
float, isteğe bağlı, varsayılan1e-12) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - pad_token_id (
int, isteğe bağlı, varsayılan0) — Sözlükte dolgu için kullanılan token kimliği. - bos_token_id (
int, isteğe bağlı) — Sözlükte akış başlangıcı için kullanılan token kimliği. - eos_token_id (
Union[int, list[int]], isteğe bağlı) — Sözlükte akış sonu için kullanılan token kimliği. - projection_dim (
int, isteğe bağlı, varsayılan0) — Metin ve görme projeksiyon katmanlarının boyutluluğu. - is_decoder (
bool, isteğe bağlı, varsayılanFalse) — Modelin bir decoder olarak kullanılıp kullanılmadığı.Falseise model bir encoder olarak kullanılır. - add_cross_attention (
bool, isteğe bağlı, varsayılanFalse) — Modelde çapraz dikkat katmanlarının eklenip eklenmeyeceğini belirtir.
Bu, bir DPRQuestionEncoder yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Dpr modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/dpr-ctx_encoder-single-nq-base ile benzer bir yapılandırma elde edilir.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnek:
>>> 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
DPRContextEncoder tokenizer'ı oluşturun.
DPRContextEncoderTokenizer, BertTokenizer ile aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama ayrımı ve wordpiece.
Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf BertTokenizer'a başvurun.
DPRContextEncoderTokenizerFast
sınıf 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 )
HuggingFace'in tokenizers kütüphanesiyle desteklenen “fast” bir DPRContextEncoder tokenizer'ı oluşturun.
DPRContextEncoderTokenizerFast, BertTokenizer ile aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama ayrımı ve wordpiece.
Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf BertTokenizer'a başvurun.
DPRQuestionEncoderTokenizer
Bir DPRQuestionEncoder tokenizer'ı oluşturur.
DPRQuestionEncoderTokenizer, BertTokenizer ile aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama ayrımı ve wordpiece.
Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf BertTokenizer'a başvurun.
DPRQuestionEncoderTokenizerFast
sınıf 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 )
HuggingFace'in tokenizers kütüphanesi tarafından desteklenen “fast” DPRQuestionEncoder tokenizer'ı oluşturur.
DPRQuestionEncoderTokenizerFast, BertTokenizer ile aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama işareti bölme ve wordpiece.
Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf BertTokenizer'a başvurun.
DPRReaderTokenizer
sınıf transformers.DPRReaderTokenizer
< source >( *argsdo_lower_case = False**kwargs ) → dict[str, list[list[int]]]
Parametreler
- questions (
strveyalist[str]) — Kodlanacak sorular. Birçok pasaj için tek bir soru belirleyebilirsiniz. Bu durumda, soru[questions] * n_passagesşeklinde çoğaltılır. Aksi takdirde,titlesveyatextsiçindeki kadar soru belirtmeniz gerekir. - titles (
strveyalist[str]) — Kodlanacak pasaj başlıkları. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir. - texts (
strveyalist[str]) — Kodlanacak pasaj metinleri. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir. - padding (
bool,strveya PaddingStrategy, isteğe bağlı, varsayılan olarakFalse) — Dolgu işlemini etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:Trueveya'longest': Batch içindeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlandıysa dolgu yapılmaz).'max_length':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.Falseveya'do_not_pad'(varsayılan): Dolgu yok (yani, farklı uzunluklarda diziler içeren bir parti çıktı olarak üretilebilir).
- truncation (
bool,strveya TruncationStrategy, isteğe bağlı, varsayılan olarakFalse) — Kesmeyi (truncation) etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:Trueveya'longest_first':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltır. Bu işlem, token bazında gerçekleşir; bir çift dizi (veya çift dizilerden oluşan bir batch) sağlandığında, çiftteki en uzun diziden bir token kaldırılır.'only_first':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltır. Bir çift dizi (veya çiftlerin bir partisi) sağlandığında, yalnızca çiftin ilk dizisini kısaltır.'only_second':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum girdi uzunluğuna kısaltır. Bu, bir çift dizi (veya çiftlerin bir partisi) sağlandığında yalnızca çiftin ikinci dizisini kısaltır.Falseveya'do_not_truncate'(varsayılan): Kesme yapılmaz (yani, modelin kabul edebileceği maksimum giriş boyutundan daha uzun dizi uzunluklarına sahip bir çıktı partisi üretilebilir).
- max_length (
int, isteğe bağlı) — Bir kesme/doldurma parametresi tarafından kullanılacak maksimum uzunluğu kontrol eder.Eğer ayarlanmazsa veya
Noneolarak ayarlanırsa, kırpma/dolgu parametrelerinden biri tarafından bir maksimum uzunluk gerekiyorsa, bu, önceden tanımlanmış modelin maksimum uzunluğunu kullanır. Modelin belirli bir maksimum giriş uzunluğu yoksa (XLNet gibi), maksimum uzunluğa kırpma/dolgu devre dışı bırakılır. - return_tensors (
strveya TensorType, isteğe bağlı) — Belirlenirse, Python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler şunlardır:'pt': PyTorchtorch.Tensornesnelerini döndürür.'np': Numpynp.ndarraynesnelerini döndürür.
- return_attention_mask (
bool, isteğe bağlı) — Dikkat maskesinin döndürülüp döndürülmeyeceğini belirtir. Belirtilmezse,return_outputsözniteliğinde tanımlanan ilgili tokenizer varsayılanına göre dikkat maskesi döndürülür.
Dönüş değeri
dict[str, list[list[int]]]
Aşağıdaki anahtarlara sahip bir sözlük:
input_ids: Bir modele verilecek token kimliklerinin listesi.attention_mask: Modelin hangi token'lara dikkat etmesi gerektiğini belirleyen indeks listesi.
DPRReader tokenizer'ı oluşturun.
DPRReaderTokenizer, BertTokenizer ile neredeyse aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama işareti bölme ve wordpiece. Farkı, DPRReader modeline beslenmek üzere birleştirilen question, titles ve texts olmak üzere üç girdi dizgesi almasıdır.
Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf BertTokenizer'a başvurun.
Giriş dizelerinin token kimliklerini ve .decode_best_spans fonksiyonuna verilecek diğer bilgileri içeren bir sözlük döndürür.
Bu işlem, bir sorunun ve farklı pasajların (başlık ve metin) dizelerini, tokenizer ve sözlük kullanarak kimlik (tamsayı) dizilerine dönüştürür. Sonuçta elde edilen input_ids, boyutu (n_passages, sequence_length) olan bir matristir.
DPRReaderTokenizerFast
sınıf 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]]]
Parametreler
- questions (
strveyalist[str]) — Kodlanacak sorular. Birçok pasaj için tek bir soru belirleyebilirsiniz. Bu durumda, soru[questions] * n_passagesşeklinde çoğaltılır. Aksi takdirde,titlesveyatextsiçindeki kadar soru belirtmeniz gerekir. - titles (
strveyalist[str]) — Kodlanacak pasaj başlıkları. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir. - texts (
strveyalist[str]) — Kodlanacak pasaj metinleri. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir. - padding (
bool,strveya PaddingStrategy, isteğe bağlı, varsayılan olarakFalse) — Dolgu işlemini etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:Trueveya'longest': Batch içindeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlandıysa dolgu yapılmaz).'max_length':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.Falseveya'do_not_pad'(varsayılan): Dolgu yok (yani, farklı uzunluklarda diziler içeren bir parti çıktı olarak üretilebilir).
- truncation (
bool,strveya TruncationStrategy, isteğe bağlı, varsayılan olarakFalse) — Kesmeyi (truncation) etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:Trueveya'longest_first':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltır. Bu işlem, token bazında gerçekleşir; bir çift dizi (veya çift dizilerden oluşan bir batch) sağlandığında, çiftteki en uzun diziden bir token kaldırılır.'only_first':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kısaltır. Bir çift dizi (veya çiftlerin bir partisi) sağlandığında, yalnızca çiftin ilk dizisini kısaltır.'only_second':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum girdi uzunluğuna kısaltır. Bu, bir çift dizi (veya çiftlerin bir partisi) sağlandığında yalnızca çiftin ikinci dizisini kısaltır.Falseveya'do_not_truncate'(varsayılan): Kesme yapılmaz (yani, modelin kabul edebileceği maksimum giriş boyutundan daha uzun dizi uzunluklarına sahip bir çıktı partisi üretilebilir).
- max_length (
int, isteğe bağlı) — Bir kesme/doldurma parametresi tarafından kullanılacak maksimum uzunluğu kontrol eder.Eğer ayarlanmazsa veya
Noneolarak ayarlanırsa, kırpma/dolgu parametrelerinden biri tarafından bir maksimum uzunluk gerekiyorsa, bu, önceden tanımlanmış modelin maksimum uzunluğunu kullanır. Modelin belirli bir maksimum giriş uzunluğu yoksa (XLNet gibi), maksimum uzunluğa kırpma/dolgu devre dışı bırakılır. - return_tensors (
strveya TensorType, isteğe bağlı) — Belirlenirse, Python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler şunlardır:'pt': PyTorchtorch.Tensornesnelerini döndürür.'np': Numpynp.ndarraynesnelerini döndürür.
- return_attention_mask (
bool, isteğe bağlı) — Dikkat maskesinin döndürülüp döndürülmeyeceğini belirtir. Belirtilmezse,return_outputsözniteliğinde tanımlanan ilgili tokenizer varsayılanına göre dikkat maskesi döndürülür.
Dönüş değeri
dict[str, list[list[int]]]
Aşağıdaki anahtarlara sahip bir sözlük:
input_ids: Bir modele verilecek token kimliklerinin listesi.attention_mask: Modelin hangi token'lara dikkat etmesi gerektiğini belirleyen indeks listesi.
HuggingFace'in tokenizers kütüphanesi tarafından desteklenen “fast” DPRReader tokenizer'ı oluşturur.
DPRReaderTokenizerFast, BertTokenizer ile neredeyse aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama işareti bölme ve wordpiece. Farkı, DPRReader modeline beslenmek üzere birleştirilen üç giriş dizisine sahip olmasıdır: question, titles ve texts.
Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf BertTokenizer'a başvurun.
Giriş dizelerinin token kimliklerini ve .decode_best_spans fonksiyonuna verilecek diğer bilgileri içeren bir sözlük döndürür.
Bu işlem, bir sorunun ve farklı pasajların (başlık ve metin) dizelerini, tokenizer ve sözlük kullanarak kimlik (tamsayı) dizilerine dönüştürür. Sonuçta elde edilen input_ids, (n_passages, sequence_length) boyutunda, aşağıdaki formata sahip bir matristir:
[CLS] <soru token kimlikleri> [SEP] <başlık kimlikleri> [SEP] <metin kimlikleri>
DPR'ye özgü çıktılar
sınıf transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput
< source >( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- pooler_output (
torch.Tensor, şekli(batch_size, embeddings_size)) — DPR kodlayıcısı, bağlam temsiline karşılık gelen pooler_output değerini üretir. Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, bir Linear katmanı tarafından daha fazla işlenir. Bu çıktı, soru gömme değerleriyle en yakın komşu sorguları için bağlamları gömmek amacıyla kullanılmalıdır. - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu türden bir demettorch.Tensor(şeklinde, her katman için bir adet). Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
DPRQuestionEncoder çıktılarının sınıfı.
sınıf transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput
< source >( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- pooler_output (
torch.Tensor, şekli(batch_size, embeddings_size)) — DPR kodlayıcısı, soru temsiline karşılık gelen pooler_output değerini üretir. Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, bir Linear katmanı tarafından daha fazla işlenir. Bu çıktı, bağlam gömme değerleriyle en yakın komşu sorguları için soruları gömmek amacıyla kullanılmalıdır. - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu türden bir demettorch.Tensor(şeklinde, her katman için bir adet). Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
DPRQuestionEncoder çıktılarının sınıfı.
sınıf 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 )
Parametreler
- start_logits (
torch.Tensor, şekli(n_passages, sequence_length)) — Her pasaj için span'ın başlangıç indeksine ait logitler. - end_logits (
torch.Tensor, şekli(n_passages, sequence_length)) — Her pasaj için aralığın son indeksine ait logitler. - relevance_logits (
torch.Tensor, şekli(n_passages, )) — DPRReader'ın QA sınıflandırıcısının çıktıları; soruyu yanıtlamak için her pasajın puanlarını, diğer tüm pasajlarla karşılaştırılarak verir. - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu türden bir demettorch.Tensor(şeklinde, her katman için bir adet). Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
DPRQuestionEncoder çıktılarının sınıfı.
DPRContextEncoder
sınıf transformers.DPRContextEncoder
< source >( config: DPRConfig )
Parametreler
- config (DPRConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Pooler çıktılarını bağlam temsilleri olarak üreten, çıplak DPRContextEncoder dönüştürücüsü.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
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)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length)) — Sözlükteki girdi dizisi token'larının indeksleri. Ön eğitmeyle uyumlu olması için DPR girdi dizisi, [CLS] ve [SEP] token'ları kullanılarak aşağıdaki gibi biçimlendirilmelidir:(a) Dizi çiftleri için (örneğin başlık+metin çifti için):
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- token_type_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
DPRContextEncoderOutput veya tuple(torch.Tensor)
DPRContextEncoderOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (DPRConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
DPRContextEncoder forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
pooler_output (
torch.Tensor, şekli(batch_size, embeddings_size)) — DPR kodlayıcısı, bağlam temsiline karşılık gelen pooler_output değerini üretir. Sıralamanın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, bir Linear katmanı tarafından daha fazla işlenir. Bu çıktı, soru gömme değerleriyle en yakın komşu sorguları için bağlamları gömmek amacıyla kullanılmalıdır.hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple[torch.Tensor, ...], isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
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) Tek diziler için (örneğin bir soru için):
tokens: [CLS] the dog is hairy . [SEP]
token_type_ids: 0 0 0 0 0 0 0DPR, mutlak konum gömme (embedding) kullanan bir modeldir; bu nedenle girdilerin soldan değil, sağdan doldurulması (padding) genellikle önerilir.
Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın.
Örnekler:
>>> 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
sınıf transformers.DPRQuestionEncoder
< source >( config: DPRConfig )
Parametreler
- config (DPRConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Soru temsilleri olarak pooler çıktıları üreten, çıplak DPRQuestionEncoder dönüştürücüsü.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
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)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length)) — Sözlükteki girdi dizisi token'larının indeksleri. Ön eğitmeyle uyumlu olması için DPR girdi dizisi, [CLS] ve [SEP] token'ları kullanılarak aşağıdaki gibi biçimlendirilmelidir:(a) Dizi çiftleri için (örneğin başlık+metin çifti için):
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- token_type_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
DPRQuestionEncoderOutput veya tuple(torch.Tensor)
DPRQuestionEncoderOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (DPRConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
DPRQuestionEncoder forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
pooler_output (
torch.Tensor, şekli(batch_size, embeddings_size)) — DPR kodlayıcısı, soru temsiline karşılık gelen pooler_output değerini üretir. Sıralamanın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, bir Linear katmanı tarafından daha fazla işlenir. Bu çıktı, bağlam gömme değerleriyle en yakın komşu sorguları için soruları gömmek amacıyla kullanılmalıdır.hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple[torch.Tensor, ...], isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
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) Tek diziler için (örneğin bir soru için):
tokens: [CLS] the dog is hairy . [SEP]
token_type_ids: 0 0 0 0 0 0 0DPR, mutlak konum gömme (embedding) kullanan bir modeldir; bu nedenle girdilerin soldan değil, sağdan doldurulması (padding) genellikle önerilir.
Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() yöntemlerine bakın.
Örnekler:
>>> 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
sınıf transformers.DPRReader
< source >( config: DPRConfig )
Parametreler
- config (DPRConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Span tahminleri üreten çıplak DPRReader transformer'ı.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
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)
Parametreler
- input_ids (
tuple[torch.LongTensor]şeklinde(n_passages, sequence_length)) — Sözlükteki girdi dizisi belirteçlerinin indeksleri. Bir soru, 2) parça başlıkları ve 3) parça metinlerinden oluşan bir üçlü dizisi olmalıdır. Ön eğitime uyum sağlamak için DPRinput_idsdizisi [CLS] ve [SEP] ile şu biçimde biçimlendirilmelidir:[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>DPR, mutlak konum gömme (embedding) kullanan bir modeldir; bu nedenle girdilerin soldan değil, sağdan doldurulması (padding) genellikle önerilir.
DPRReaderTokenizer kullanılarak indeksler elde edilebilir. Daha fazla ayrıntı için bu sınıfın belgesine bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- inputs_embeds (
torch.Tensor, şekli(n_passages, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
DPRReaderOutput veya tuple(torch.Tensor)
Bir DPRReaderOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (DPRConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
DPRReader forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
start_logits (
torch.Tensor, şekli(n_passages, sequence_length)) — Her pasaj için span'ın başlangıç indeksine ait logits.end_logits (
torch.Tensor, şekli(n_passages, sequence_length)) — Her pasaj için aralığın son indeksine ait logitler.relevance_logits (
torch.Tensor, şekli(n_passages, )) — DPRReader'ın QA sınıflandırıcısının çıktıları; soruyu yanıtlamak için her pasajın puanını, diğer tüm pasajlarla karşılaştırarak verir.hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple[torch.Tensor, ...], isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Örnekler:
>>> 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