# DPR

## Genel Bakış

Dense Passage Retrieval (DPR), en son açık alan soru-cevap (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](https://huggingface.co/papers/2004.04906) 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 ve bu alanda TF-IDF veya BM25 gibi geleneksel seyrek vektör uzay modelleri fiili standart yöntemdir. Bu çalışmada, gömme değerlerinin basit bir çift kodlayıcı çerçevesi kullanılarak az sayıda soru ve pasajdan öğrenildiği, geri getirmenin yalnızca yoğun 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 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](https://huggingface.co/lhoestq) tarafından katkıda bulunmuştur. Orijinal kod [burada](https://github.com/facebookresearch/DPR) 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[[transformers.DPRConfig]]

#### transformers.DPRConfig[[transformers.DPRConfig]]

```python
transformers.DPRConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 30522, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.1, attention_probs_dropout_prob: float | int = 0.1, max_position_embeddings: int = 512, type_vocab_size: int = 2, initializer_range: float = 0.02, layer_norm_eps: float = 1e-12, pad_token_id: int | None = 0, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, projection_dim: int = 0, is_decoder: bool = False, add_cross_attention: bool = False)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/configuration_dpr.py#L24)

**Parametreler:**

vocab_size (`int`, *isteğe bağlı*, varsayılan `30522`) : Modelin sözlük boyutu. `input_ids` tarafından temsil edilebilecek farklı token sayısını tanımlar.

hidden_size (`int`, *isteğe bağlı*, varsayılan `768`) : Gizli temsillerin boyutu.

num_hidden_layers (`int`, *isteğe bağlı*, varsayılan `12`) : Transformer decoder'ındaki gizli katman sayısı.

num_attention_heads (`int`, *isteğe bağlı*, varsayılan `12`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

intermediate_size (`int`, *isteğe bağlı*, varsayılan `3072`) : MLP temsil boyutu.

hidden_act (`str`, *isteğe bağlı*, varsayılan `gelu`) : Çö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ılan `0.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ılan `0.1`) : Dikkat olasılıkları için dropout oranı.

max_position_embeddings (`int`, *isteğe bağlı*, varsayılan `512`) : Bu modelin kullanılabileceği maksimum dizi uzunluğu.

type_vocab_size (`int`, *isteğe bağlı*, varsayılan `2`) : `token_type_ids` için sözlük boyutu.

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

layer_norm_eps (`float`, *opsiyonel*, varsayılan `1e-12`) : Katman normalizasyonu katmanları tarafından kullanılan epsilon.

pad_token_id (`int`, *isteğe bağlı*, varsayılan `0`) : 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ılan `0`) : Metin ve görme projeksiyon katmanlarının boyutluluğu.

is_decoder (`bool`, *isteğe bağlı*, varsayılan `False`) : Modelin bir çözücü olarak kullanılıp kullanılmadığı. `False` ise model, bir kodlayıcı olarak kullanılır.

add_cross_attention (`bool`, *isteğe bağlı*, varsayılan `False`) : 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ılanlarla bir yapılandırma örneklendiğinde, [facebook/dpr-ctx_encoder-single-nq-base](https://huggingface.co/facebook/dpr-ctx_encoder-single-nq-base) ile benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:

```python
>>> 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.config
```

## DPRContextEncoderTokenizer[[transformers.DPRContextEncoderTokenizer]]

#### transformers.DPRContextEncoderTokenizer[[transformers.DPRContextEncoderTokenizer]]

```python
transformers.DPRContextEncoderTokenizer(*args, do_lower_case = False, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/tokenization_dpr.py#L28)

DPRContextEncoder tokenizer'ı oluşturun.

[DPRContextEncoderTokenizer](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRContextEncoderTokenizer), [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.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](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer)'a başvurun.

## DPRContextEncoderTokenizerFast[[transformers.DPRContextEncoderTokenizerFast]]

#### transformers.DPRContextEncoderTokenizerFast[[transformers.DPRContextEncoderTokenizerFast]]

```python
transformers.DPRContextEncoderTokenizerFast(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/tokenization_dpr_fast.py#L29)

HuggingFace'in *tokenizers* kütüphanesi tarafından desteklenen "fast" DPRContextEncoder tokenizer'ı oluşturun.

[DPRContextEncoderTokenizerFast](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRContextEncoderTokenizerFast), [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.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](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer)'a başvurun.

## DPRQuestionEncoderTokenizer[[transformers.DPRQuestionEncoderTokenizer]]

#### transformers.DPRQuestionEncoderTokenizer[[transformers.DPRQuestionEncoderTokenizer]]

```python
transformers.DPRQuestionEncoderTokenizer(*args, do_lower_case = False, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/tokenization_dpr.py#L45)

Bir DPRQuestionEncoder tokenizer'ı oluşturur.

[DPRQuestionEncoderTokenizer](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRQuestionEncoderTokenizer), [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.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](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer)'a başvurun.

## DPRQuestionEncoderTokenizerFast[[transformers.DPRQuestionEncoderTokenizerFast]]

#### transformers.DPRQuestionEncoderTokenizerFast[[transformers.DPRQuestionEncoderTokenizerFast]]

```python
transformers.DPRQuestionEncoderTokenizerFast(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/tokenization_dpr_fast.py#L43)

HuggingFace'in *tokenizers* kütüphanesi tarafından desteklenen "fast" DPRQuestionEncoder tokenizer'ı oluşturur.

[DPRQuestionEncoderTokenizerFast](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRQuestionEncoderTokenizerFast), [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.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](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer)'a başvurun.

## DPRReaderTokenizer[[transformers.DPRReaderTokenizer]]

#### transformers.DPRReaderTokenizer[[transformers.DPRReaderTokenizer]]

```python
transformers.DPRReaderTokenizer(*args, do_lower_case = False, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/tokenization_dpr.py#L311)

**Parametreler:**

questions (`str` veya `list[str]`) : Kodlanacak sorular. Birçok pasaj için tek bir soru belirleyebilirsiniz. Bu durumda, soru `[questions] * n_passages` gibi çoğaltılır. Aksi takdirde, `titles` veya `texts` içindeki kadar soru belirtmeniz gerekir.

titles (`str` veya `list[str]`) : Kodlanacak pasaj başlıkları. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir.

texts (`str` veya `list[str]`) : Kodlanacak pasaj metinleri. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir.

padding (`bool`, `str` veya [PaddingStrategy](/docs/transformers/main/tr/internal/file_utils#transformers.utils.PaddingStrategy), *opsiyonel*, varsayılan `False`) : Dolguyu (padding) etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:  - `True` veya `'longest'`: Batch'teki en uzun diziye kadar doldurur (yalnızca tek bir dizi sağlandıysa dolgu yapılmaz). - `'max_length'`: `max_length` argümanı ile belirtilen maksimum uzunluğa kadar veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur. - `False` veya `'do_not_pad'` (varsayılan): Dolgu yapılmaz (yani, farklı uzunluklarda dizilere sahip bir batch çıktısı verilebilir).

truncation (`bool`, `str` veya [TruncationStrategy](/docs/transformers/main/tr/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *opsiyonel*, varsayılan `False`) : Kısaltmayı etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:  - `True` veya `'longest_first'`: `max_length` argü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 dizi çifti (veya çiftlerin bir partisi) sağlanırsa, çiftteki en uzun diziden token token kısaltma yapar. - `'only_first'`: `max_length` argü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 dizi çifti (veya çiftlerin bir partisi) sağlanırsa, yalnızca çiftin ilk dizisini kısaltır. - `'only_second'`: `max_length` argü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 dizi çifti (veya çiftlerin bir partisi) sağlanırsa, yalnızca çiftin ikinci dizisini kısaltır. - `False` veya `'do_not_truncate'` (varsayılan): Kısaltma yapılmaz (yani, modelin kabul edebileceği maksimum giriş boyutundan daha uzun dizi uzunluklarına sahip partiler üretebilir).

max_length (`int`, *opsiyonel*) : Kırpma/doldurma parametrelerinden biri tarafından kullanılacak olan maksimum uzunluğu kontrol eder. Ayarlanmaz veya `None` olarak ayarlanırsa, kırpma/doldurma parametrelerinden biri maksimum uzunluk gerektiriyorsa, önceden tanımlanmış modelin maksimum uzunluğu kullanılır. Modelin belirli bir maksimum giriş uzunluğu yoksa (XLNet gibi) maksimum uzunluğa kırpma/doldurma devre dışı bırakılır.

return_tensors (`str` veya [TensorType](/docs/transformers/main/tr/internal/file_utils#transformers.TensorType), *opsiyonel*) : Ayarlanırsa, Python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler:  - `'pt'`: PyTorch `torch.Tensor` nesnelerini döndürür. - `'np'`: Numpy `np.ndarray` nesnelerini döndürür.

return_attention_mask (`bool`, *isteğe bağlı*) : Dikkat maskesinin (attention mask) döndürülüp döndürülmeyeceğini belirtir. Ayarlanmazsa, `return_outputs` özniteliği tarafından tanımlanan ilgili tokenizörün varsayılanına göre dikkat maskesi döndürülür.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

**Dönüş:** `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](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRReaderTokenizer), [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer) ile neredeyse aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama ayrımı ve wordpiece. Farkı, [DPRReader](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRReader) modeline beslenmek üzere birleştirilen üç giriş dizgisine sahip olmasıdır: question, titles ve texts.

Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer)'a başvurun.

Giriş dizgilerinin token kimliklerini ve `.decode_best_spans` fonksiyonuna verilecek diğer bilgileri içeren bir sözlük döndürür. Tokenizer ve sözlüğü kullanarak bir sorunun ve farklı pasajların (başlık ve metin) dizgelerini bir dizi kimliğe (tamsayılara) dönüştürür. Sonuçta oluşan `input_ids`, boyutu `(n_passages, sequence_length)` olan bir matristir.

şu biçimle:

```
[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>
```

## DPRReaderTokenizerFast[[transformers.DPRReaderTokenizerFast]]

#### transformers.DPRReaderTokenizerFast[[transformers.DPRReaderTokenizerFast]]

```python
transformers.DPRReaderTokenizerFast(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/tokenization_dpr_fast.py#L301)

**Parametreler:**

questions (`str` veya `list[str]`) : Kodlanacak sorular. Birçok pasaj için tek bir soru belirleyebilirsiniz. Bu durumda, soru `[questions] * n_passages` gibi çoğaltılır. Aksi takdirde, `titles` veya `texts` içindeki kadar soru belirtmeniz gerekir.

titles (`str` veya `list[str]`) : Kodlanacak pasaj başlıkları. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir.

texts (`str` veya `list[str]`) : Kodlanacak pasaj metinleri. Birden fazla pasaj varsa bu, bir dize veya dize listesi olabilir.

padding (`bool`, `str` veya [PaddingStrategy](/docs/transformers/main/tr/internal/file_utils#transformers.utils.PaddingStrategy), *opsiyonel*, varsayılan `False`) : Dolguyu (padding) etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:  - `True` veya `'longest'`: Batch'teki en uzun diziye kadar doldurur (yalnızca tek bir dizi sağlandıysa dolgu yapılmaz). - `'max_length'`: `max_length` argümanı ile belirtilen maksimum uzunluğa kadar veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur. - `False` veya `'do_not_pad'` (varsayılan): Dolgu yapılmaz (yani, farklı uzunluklarda dizilere sahip bir batch çıktısı verilebilir).

truncation (`bool`, `str` veya [TruncationStrategy](/docs/transformers/main/tr/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *opsiyonel*, varsayılan `False`) : Kısaltmayı etkinleştirir ve kontrol eder. Aşağıdaki değerleri kabul eder:  - `True` veya `'longest_first'`: `max_length` argü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 dizi çifti (veya çiftlerin bir partisi) sağlanırsa, çiftteki en uzun diziden token token kısaltma yapar. - `'only_first'`: `max_length` argü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 dizi çifti (veya çiftlerin bir partisi) sağlanırsa, yalnızca çiftin ilk dizisini kısaltır. - `'only_second'`: `max_length` argü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 dizi çifti (veya çiftlerin bir partisi) sağlanırsa, yalnızca çiftin ikinci dizisini kısaltır. - `False` veya `'do_not_truncate'` (varsayılan): Kısaltma yapılmaz (yani, modelin kabul edebileceği maksimum giriş boyutundan daha uzun dizi uzunluklarına sahip partiler üretebilir).

max_length (`int`, *opsiyonel*) : Kırpma/doldurma parametrelerinden biri tarafından kullanılacak olan maksimum uzunluğu kontrol eder. Ayarlanmaz veya `None` olarak ayarlanırsa, kırpma/doldurma parametrelerinden biri maksimum uzunluk gerektiriyorsa, önceden tanımlanmış modelin maksimum uzunluğu kullanılır. Modelin belirli bir maksimum giriş uzunluğu yoksa (XLNet gibi) maksimum uzunluğa kırpma/doldurma devre dışı bırakılır.

return_tensors (`str` veya [TensorType](/docs/transformers/main/tr/internal/file_utils#transformers.TensorType), *opsiyonel*) : Ayarlanırsa, Python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler:  - `'pt'`: PyTorch `torch.Tensor` nesnelerini döndürür. - `'np'`: Numpy `np.ndarray` nesnelerini döndürür.

return_attention_mask (`bool`, *isteğe bağlı*) : Dikkat maskesinin (attention mask) döndürülüp döndürülmeyeceğini belirtir. Ayarlanmazsa, `return_outputs` özniteliği tarafından tanımlanan ilgili tokenizörün varsayılanına göre dikkat maskesi döndürülür.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

**Dönüş:** `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 "hızlı" bir DPRReader belirteç oluşturur.

[DPRReaderTokenizerFast](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRReaderTokenizerFast), [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer) ile neredeyse aynıdır ve uçtan uca tokenizasyonu çalıştırır: noktalama ayrımı ve wordpiece. Farkı, [DPRReader](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRReader) modeline beslenmek üzere birleştirilen question, titles ve texts olmak üzere üç giriş dizgisine sahip olmasıdır.

Parametreler ile ilgili kullanım örnekleri ve belgeler için üst sınıf [BertTokenizer](/docs/transformers/main/tr/model_doc/lxmert#transformers.BertTokenizer)'a başvurun.

Giriş dizgilerinin token kimliklerini ve `.decode_best_spans` fonksiyonuna verilecek diğer bilgileri içeren bir sözlük döndürür. Tokenizer ve sözlüğü kullanarak bir sorunun ve farklı pasajların (başlık ve metin) dizgelerini bir dizi kimliğe (tamsayılara) dönüştürür. Sonuçta oluşan `input_ids`, `(n_passages, sequence_length)` boyutunda, aşağıdaki biçimde bir matristir:

[CLS] [SEP] [SEP]

## DPR'ye özgü çıktılar[[transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput]]

#### transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput[[transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput]]

```python
transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput(pooler_output: Tensor, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L46)

**Parametreler:**

pooler_output (`torch.Tensor`, şekli `(batch_size, embeddings_size)`) : DPR kodlayıcı, 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ı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğ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 bir demet, şekli `(batch_size, sequence_length, hidden_size)`. Modelin her katmanının çıktısındaki gizli durumlar ve isteğe bağlı başlangıç gömme çıktıları.

attentions (`tuple[torch.Tensor, ...]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) : `torch.Tensor` (her katman için bir tane) içeren bir Tuple, şekli `(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](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRQuestionEncoder) çıktılarının sınıfı.

#### transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput[[transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput]]

```python
transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput(pooler_output: Tensor, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L65)

**Parametreler:**

pooler_output (`torch.Tensor`, şekli `(batch_size, embeddings_size)`) : DPR kodlayıcı, 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ı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğ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 bir demet, şekli `(batch_size, sequence_length, hidden_size)`. Modelin her katmanının çıktısındaki gizli durumlar ve isteğe bağlı başlangıç gömme çıktıları.

attentions (`tuple[torch.Tensor, ...]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) : `torch.Tensor` (her katman için bir tane) içeren bir Tuple, şekli `(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](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRQuestionEncoder) çıktılarının sınıfı.

#### transformers.DPRReaderOutput[[transformers.DPRReaderOutput]]

```python
transformers.DPRReaderOutput(start_logits: Tensor, end_logits: typing.Optional[torch.Tensor] = None, relevance_logits: typing.Optional[torch.Tensor] = None, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L84)

**Parametreler:**

start_logits (`torch.Tensor`, şekli `(n_passages, sequence_length)`) : Her pasaj için span başlangıç indeksinin logitleri.

end_logits (`torch.Tensor`, şekli `(n_passages, sequence_length)`) : Her pasaj için span'in son indeksinin logitleri.

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ı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğ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 bir demet, şekli `(batch_size, sequence_length, hidden_size)`. Modelin her katmanının çıktısındaki gizli durumlar ve isteğe bağlı başlangıç gömme çıktıları.

attentions (`tuple[torch.Tensor, ...]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) : `torch.Tensor` (her katman için bir tane) içeren bir Tuple, şekli `(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](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRQuestionEncoder) çıktılarının sınıfı.

## DPRContextEncoder[[transformers.DPRContextEncoder]]

#### transformers.DPRContextEncoder[[transformers.DPRContextEncoder]]

```python
transformers.DPRContextEncoder(config: DPRConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L265)

**Parametreler:**

config ([DPRConfig](/docs/transformers/main/tr/model_doc/dpr#transformers.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()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Pooler çıktılarını bağlam temsilleri olarak üreten, çıplak DPRContextEncoder dönüştürücüsü.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.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 ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#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[[transformers.DPRContextEncoder.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L273)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Ön eğitimiyle eşleşmesi için DPR girdi dizisi, aşağıdaki gibi [CLS] ve [SEP] belirteçleriyle biçimlendirilmelidir: (a) Dizi çiftleri için (örneğin başlık+metin çifti için):

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

token_type_ids (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler `[0, 1]` aralığından seçilir:  - 0, *sentence A* token'ına karşılık gelir, - 1, *sentence B* token'ına karşılık gelir.  [Token type ID'leri nelerdir?](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini 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ülmediğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `attentions` bö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ındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** [DPRContextEncoderOutput](/docs/transformers/main/tr/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput) veya `tuple(torch.Tensor)`

[DPRContextEncoderOutput](/docs/transformers/main/tr/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput) veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırmaya ([DPRConfig](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[DPRContextEncoder](/docs/transformers/main/tr/model_doc/dpr#transformers.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ü ilki ö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ı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ı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğ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 bir tane) içeren bir tuple, ş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ı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafaları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   0
```

  DPR mutlak konum gömme (embedding) içeren bir modeldir, bu nedenle girdilerin genellikle soldan değil sağdan doldurulması (padding) önerilir.

  Dizinler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın.

  [Girdi kimlikleri nelerdir?](../glossary#input-ids)

Örnekler:

```python
>>> 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_output
```

## DPRQuestionEncoder[[transformers.DPRQuestionEncoder]]

#### transformers.DPRQuestionEncoder[[transformers.DPRQuestionEncoder]]

```python
transformers.DPRQuestionEncoder(config: DPRConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L371)

**Parametreler:**

config ([DPRConfig](/docs/transformers/main/tr/model_doc/dpr#transformers.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()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Soru temsilleri olarak pooler çıktıları üreten, çıplak DPRQuestionEncoder dönüştürücüsü.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.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 ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#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[[transformers.DPRQuestionEncoder.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L379)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Ön eğitimiyle eşleşmesi için DPR girdi dizisi, aşağıdaki gibi [CLS] ve [SEP] belirteçleriyle biçimlendirilmelidir: (a) Dizi çiftleri için (örneğin başlık+metin çifti için):

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

token_type_ids (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler `[0, 1]` aralığından seçilir:  - 0, *sentence A* token'ına karşılık gelir, - 1, *sentence B* token'ına karşılık gelir.  [Token type ID'leri nelerdir?](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini 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ülmediğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `attentions` bö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ındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** [DPRQuestionEncoderOutput](/docs/transformers/main/tr/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput) veya `tuple(torch.Tensor)`

[DPRQuestionEncoderOutput](/docs/transformers/main/tr/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput) veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırma ([DPRConfig](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[DPRQuestionEncoder](/docs/transformers/main/tr/model_doc/dpr#transformers.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ü ilki ö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ı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ı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğ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 bir tane) içeren bir tuple, ş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ı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafaları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   0
```

  DPR mutlak konum gömme (embedding) içeren bir modeldir, bu nedenle girdilerin genellikle soldan değil sağdan doldurulması (padding) önerilir.

  Dizinler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın.

  [Girdi kimlikleri nelerdir?](../glossary#input-ids)

Örnekler:

```python
>>> 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_output
```

## DPRReader[[transformers.DPRReader]]

#### transformers.DPRReader[[transformers.DPRReader]]

```python
transformers.DPRReader(config: DPRConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L478)

**Parametreler:**

config ([DPRConfig](/docs/transformers/main/tr/model_doc/dpr#transformers.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()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Span tahminleri üreten çıplak DPRReader transformer'ı.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.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 ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#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[[transformers.DPRReader.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/dpr/modeling_dpr.py#L486)

**Parametreler:**

input_ids (`tuple[torch.LongTensor]` of shapes `(n_passages, sequence_length)`) : Sözlükteki girdi dizisi belirteçlerinin dizinleri. Bir dizi üçlüsü olmalıdır: 1) soru ve 2) pasaj başlıkları ve 3) pasaj metinleri. Ön eğitime uyum sağlamak için DPR `input_ids` dizisi, [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) içeren bir modeldir, bu nedenle girdilerin soldan yerine sağdan doldurulması (padding) genellikle önerilir.  Dizinler [DPRReaderTokenizer](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRReaderTokenizer) kullanılarak elde edilebilir. Daha fazla ayrıntı için bu sınıfın belgelendirmesine bakın.  [Girdi dizinleri (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

inputs_embeds (`torch.Tensor`, şekli `(n_passages, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini 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ülmediğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `attentions` bö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ındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** [DPRReaderOutput](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRReaderOutput) veya `tuple(torch.Tensor)`

[DPRReaderOutput](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRReaderOutput) veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırma ([DPRConfig](/docs/transformers/main/tr/model_doc/dpr#transformers.DPRConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[DPRReader](/docs/transformers/main/tr/model_doc/dpr#transformers.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ü ilki ö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=True` geçirildiğinde veya `config.output_hidden_states=True` olduğ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 bir tane) içeren bir tuple, ş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ı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnekler:

```python
>>> 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
```

