# KDPM2DiscreteScheduler

`KDPM2DiscreteScheduler`, [Elucidating the Design Space of Diffusion-Based Generative Models](https://huggingface.co/papers/2206.00364) makalesinden ilham alınarak geliştirilmiş olup zamanlayıcı [Katherine Crowson](https://github.com/crowsonkb/) tarafından taşınmış ve oluşturulmuştur.

Orijinal kod tabanı [crowsonkb/k-diffusion](https://github.com/crowsonkb/k-diffusion) adresinde bulunabilir.

## KDPM2DiscreteScheduler[[diffusers.KDPM2DiscreteScheduler]]

#### diffusers.KDPM2DiscreteScheduler[[diffusers.KDPM2DiscreteScheduler]]

```python
diffusers.KDPM2DiscreteScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.00085, beta_end: float = 0.012, beta_schedule: str = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, use_karras_sigmas: bool = False, use_exponential_sigmas: bool = False, use_beta_sigmas: bool = False, prediction_type: str = 'epsilon', timestep_spacing: str = 'linspace', steps_offset: int = 0)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_k_dpm_2_discrete.py#L103)

**Parametreler:**

num_train_timesteps (`int`, varsayılan `1000`) : Modelin eğitileceği difüzyon adım sayısı.

beta_start (`float`, varsayılan `0.00085`) : Çıkarımın başlangıç `beta` değeri.

beta_end (`float`, varsayılan `0.012`) : Son `beta` değeri.

beta_schedule (`str`, varsayılan `"linear"`) : Beta zamanlaması, modelin adım atması için beta aralığını beta dizisine eşleyen bir haritalamadır. `linear` veya `scaled_linear` seçeneklerinden birini seçin.

trained_betas (`np.ndarray` veya `list[float]`, *isteğe bağlı*) : `beta_start` ve `beta_end` değerlerini atlamak için beta dizisini doğrudan yapılandırıcıya iletin.

use_karras_sigmas (`bool`, varsayılan `False`) : Örnekleme sürecinde gürültü zamanlamasındaki adım boyutları için Karras sigmalarının kullanılıp kullanılmayacağını belirtir. `True` ise, sigmalar {σi} gürültü seviyeleri dizisine göre belirlenir.

use_exponential_sigmas (`bool`, varsayılan `False`) : Örnekleme sürecinde gürültü zamanlamasındaki adım boyutları için üstel sigmaların kullanılıp kullanılmayacağı.

use_beta_sigmas (`bool`, varsayılan `False`) : Örnekleme sürecinde gürültü zamanlamasında adım boyutları için beta sigmaların kullanılıp kullanılmayacağını belirtir. Daha fazla bilgi için [Beta Sampling is All You Need](https://huggingface.co/papers/2407.12173) makalesine bakın.

prediction_type (`str`, defaults to `"epsilon"`) : Prediction type of the scheduler function; can be `epsilon` (predicts the noise of the diffusion process), `sample` (directly predicts the noisy sample`) or `v_prediction` (see section 2.4 of [Imagen Video](https://huggingface.co/papers/2210.02303) paper).

timestep_spacing (`str`, varsayılan `"linspace"`) : Zaman adımlarının ölçeklendirilme yöntemi. Daha fazla bilgi için [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) makalesindeki Tablo 2'ye bakın.

steps_offset (`int`, varsayılan `0`) : Bazı model ailelerinin gerektirdiği gibi, çıkarım adımlarına eklenen bir ofset.

KDPM2DiscreteScheduler, [Elucidating the Design Space of Diffusion-Based Generative Models](https://huggingface.co/papers/2206.00364) makalesindeki DPMSolver2 ve Algorithm 2'den ilham alınarak geliştirilmiştir.

Bu model [SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin) ve [ConfigMixin](/docs/diffusers/main/tr/api/configuration#diffusers.ConfigMixin) sınıflarından devralır. Kütüphanenin tüm zamanlayıcılar için yükleme ve kaydetme gibi genel yöntemleri uyguladığı üst sınıf belgelendirmesini kontrol edin.

#### add_noise[[diffusers.KDPM2DiscreteScheduler.add_noise]]

```python
add_noise(original_samples: Tensor, noise: Tensor, timesteps: Tensor)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_k_dpm_2_discrete.py#L666)

**Parametreler:**

original_samples (`torch.Tensor`) : Gürültü eklenecek orijinal örnekler.

noise (`torch.Tensor`) : Orijinal örneklerin üzerine eklenecek gürültü tensörü.

timesteps (`torch.Tensor`) : Gürültünün ekleneceği zaman adımları, zaman çizelgesinden gürültü seviyesini belirler.

**Dönüş:** `torch.Tensor`

Zaman adımı zamanlamasına göre ölçeklendirilen eklenen gürültüye sahip gürültülü örnekler.

Belirtilen zaman adımlarındaki gürültü planına göre orijinal örneklerin gürültü ekleyin.

#### index_for_timestep[[diffusers.KDPM2DiscreteScheduler.index_for_timestep]]

```python
index_for_timestep(timestep: typing.Union[float, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_k_dpm_2_discrete.py#L365)

**Parametreler:**

timestep (`float` veya `torch.Tensor`) : Zamanlamada bulunacak timestep değeri.

schedule_timesteps (`torch.Tensor`, *isteğe bağlı*) : Aranacak zaman adımı zamanlaması. `None` ise `self.timesteps` kullanılır.

**Dönüş:** `int`

Zaman adımı planındaki zaman adımının indeksi. Çok eşleşme varsa, planın ortasından başlanırken (örneğin, görüntüden görüntüye) bir sigmanın atlanmaması için çok eşleşme durumunda ikinci indeksi döndürür.

Verilen zaman adımının zaman adımı zaman çizelgesindeki indeksini bulun.

#### scale_model_input[[diffusers.KDPM2DiscreteScheduler.scale_model_input]]

```python
scale_model_input(sample: Tensor, timestep: typing.Union[float, torch.Tensor])
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_k_dpm_2_discrete.py#L236)

**Parametreler:**

sample (`torch.Tensor`) : Girdi örneği.

timestep (`float` veya `torch.Tensor`) : Difüzyon zincirindeki mevcut zaman adımı.

**Dönüş:** `torch.Tensor`

Ölçeklendirilmiş bir girdi örneği.

Gürültüden arındırma modelinin girdisinin mevcut zaman adımına bağlı olarak ölçeklenmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar.

#### set_begin_index[[diffusers.KDPM2DiscreteScheduler.set_begin_index]]

```python
set_begin_index(begin_index: int = 0)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_k_dpm_2_discrete.py#L226)

**Parametreler:**

begin_index (`int`, varsayılan `0`) : Zamanlayıcının başlangıç indeksi.

Zamanlayıcının başlangıç indeksini ayarlar. Bu işlev, çıkarım (inference) öncesinde pipeline'dan çalıştırılmalıdır.

#### set_timesteps[[diffusers.KDPM2DiscreteScheduler.set_timesteps]]

```python
set_timesteps(num_inference_steps: int, device: typing.Union[str, torch.device, NoneType] = None, num_train_timesteps: int | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_k_dpm_2_discrete.py#L266)

**Parametreler:**

num_inference_steps (`int`) : Ön eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı.

device (`str` veya `torch.device`, *opsiyonel*) : Timestep'lerin taşınacağı cihaz. `None` ise timestep'ler taşınmaz.

num_train_timesteps (`int`, *isteğe bağlı*) : Modeli eğitmek için kullanılan difüzyon adım sayısı. `None` ise `self.config.num_train_timesteps` kullanılır.

Difüzyon zinciri için kullanılan ayrık zaman adımlarını ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır).

#### adım[[diffusers.KDPM2DiscreteScheduler.step]]

```python
step(model_output: typing.Union[torch.Tensor, numpy.ndarray], timestep: typing.Union[float, torch.Tensor], sample: typing.Union[torch.Tensor, numpy.ndarray], return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_k_dpm_2_discrete.py#L570)

**Parametreler:**

model_output (`torch.Tensor` veya `np.ndarray`) : Öğrenmiş difüzyon modelinden gelen doğrudan çıktı.

timestep (`float` veya `torch.Tensor`) : Difüzyon zincirindeki mevcut ayrık zaman adımı.

sample (`torch.Tensor` veya `np.ndarray`) : Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.

return_dict (`bool`, varsayılan `True`) : `KDPM2DiscreteSchedulerOutput` veya tuple döndürülecek mi?

**Dönüş:**

`KDPM2DiscreteSchedulerOutput` veya `tuple[torch.Tensor, torch.Tensor]`: `True` ise `KDPM2DiscreteSchedulerOutput` döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.

Önceki zaman adımındaki örneği SDE'yi tersine çevirerek tahmin edin. Bu işlev, öğrenilen model çıktılarını (en sık tahmin edilen gürültüyü) kullanarak difüzyon sürecini ilerletir.

## SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

#### diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

```python
diffusers.schedulers.scheduling_utils.SchedulerOutput(prev_sample: Tensor)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_utils.py#L66)

**Parametreler:**

prev_sample (`torch.Tensor`, görüntüler için `(batch_size, num_channels, height, width)` boyutunda) : Önceki zaman adımının hesaplanan `(x_{t-1})` örneği. `prev_sample`, gürültü azaltma döngüsünde bir sonraki model girdisi olarak kullanılmalıdır.

Bir zamanlayıcının `step` işlevinin çıktısı için temel sınıf.

