# ScoreSdeVeScheduler

`ScoreSdeVeScheduler`, varyans patlatmalı stokastik diferansiyel denklem (SDE) zamanlayıcısıdır. Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon ve Ben Poole tarafından [Score-Based Generative Modeling through Stochastic Differential Equations](https://huggingface.co/papers/2011.13456) makalesinde tanıtılmıştır.

Makalenin özeti şudur:

*Veriden gürültü üretmek kolaydır; gürültüden veri üretmek ise üretken modellemedir. Karmaşık bir veri dağılımını, yavaşça gürültü enjekte ederek bilinen bir öncül dağılıma (prior distribution) pürüzsüzce dönüştüren bir stokastik diferansiyel denklemi (SDE) ve gürültüyü yavaşça kaldırarak öncül dağılımı tekrar veri dağılımına dönüştüren karşılık gelen ters zamanlı SDE'yi sunuyoruz. Kritik olarak, ters zamanlı SDE yalnızca bozulmuş veri dağılımının zamana bağlı gradyan alanına (diğer adıyla, skor) bağlıdır. Skor tabanlı üretken modellemedeki ilerlemelerden yararlanarak bu skorları sinir ağlarıyla doğru bir şekilde tahmin edebilir ve örnekler üretmek için sayısal SDE çözücülerini kullanabiliriz. Bu çerçevenin, skor tabanlı üretken modelleme ve difüzyon olasılıksal modellemedeki önceki yaklaşımları kapsadığını, yeni örnek alma prosedürlerine ve yeni modelleme yeteneklerine olanak tanıdığını gösteriyoruz. Özellikle, diskretize edilmiş ters zamanlı SDE'nin evrimindeki hataları düzeltmek için bir öngörücü-düzeltici (predictor-corrector) çerçevesi tanıtıyoruz. Ayrıca, SDE ile aynı dağılımdan örnekleyen ancak ek olarak kesin olasılık (likelihood) hesabına ve iyileştirilmiş örnek alma verimliliğine olanak tanıyan eşdeğer bir sinir ODE türetiyoruz. Bunun yanı sıra, sınıf koşullu üretim, görsel inpainting ve renklendirme üzerindeki deneylerle gösterildiği gibi, skor tabanlı modellerle ters problemleri çözmenin yeni bir yolunu sunuyoruz. Birden fazla mimari iyileştirmeyle birleştirildiğinde, CIFAR-10 üzerinde koşulsuz görsel üretim için 9.89 Inception skoru ve 2.20 FID ile rekor kıran bir performans elde ediyor, 2.99 bits/dim rekabetçi bir olasılık (likelihood) sağlıyor ve ilk kez skor tabanlı bir üretken modelden 1024 x 1024 görsellerin yüksek sadakatli üretimini gösteriyoruz.*

## ScoreSdeVeScheduler[[diffusers.ScoreSdeVeScheduler]]

#### diffusers.ScoreSdeVeScheduler[[diffusers.ScoreSdeVeScheduler]]

```python
diffusers.ScoreSdeVeScheduler(num_train_timesteps: int = 2000, snr: float = 0.15, sigma_min: float = 0.01, sigma_max: float = 1348.0, sampling_eps: float = 1e-05, correct_steps: int = 1)
```

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

**Parametreler:**

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

snr (`float`, varsayılan 0.15) : `model_output` örneğinden (ağdan) rastgele gürültüye yapılan adımı ağırlıklandıran bir katsayı.

sigma_min (`float`, varsayılan 0.01) : Örnekleme prosedüründeki sigma dizisi için başlangıç gürültü ölçeği. Minimum sigma, verilerin dağılımını yansıtmalıdır.

sigma_max (`float`, varsayılan 1348.0) : Modelin girdisine aktarılan sürekli zaman adımlarının aralığı için kullanılan maksimum değer.

sampling_eps (`float`, varsayılan 1e-5) : Adımların 1'den epsilon'a doğru kademeli olarak azaldığı örneklemenin son değeri.

correct_steps (`int`, varsayılan 1) : Üretilen örnek üzerinde gerçekleştirilen düzeltme adım sayısı.

`ScoreSdeVeScheduler`, varyans patlatma (variance exploding) stokastik diferansiyel denklem (SDE) zamanlayıcısıdır.

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.ScoreSdeVeScheduler.add_noise]]

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

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

**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ü zamanlamasına göre orijinal örneklerin gürültü ekleyin. Bu, ileri difüzyon sürecidir.

#### get_adjacent_sigma[[diffusers.ScoreSdeVeScheduler.get_adjacent_sigma]]

```python
get_adjacent_sigma(timesteps: Tensor, t: Tensor)
```

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

**Parametreler:**

timesteps (`torch.Tensor`) : Ayrık zaman adımı dizinlerinin tensörü.

t (`torch.Tensor`) : Sürekli zaman adımları değerlerinin tensörü.

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

Bitişik (önceki) zaman adımı indeksi için sigma değerleri.

Önceki zaman adımı dizinine karşılık gelen sigma değerini döndürür. Zaman adımı sıfır olduğunda (önceki zaman adımı yoksa), sıfır döndürülür.

#### scale_model_input[[diffusers.ScoreSdeVeScheduler.scale_model_input]]

```python
scale_model_input(sample: Tensor, timestep: int | None = None)
```

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

**Parametreler:**

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

timestep (`int`, *isteğe bağlı*) : 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_sigmas[[diffusers.ScoreSdeVeScheduler.set_sigmas]]

```python
set_sigmas(num_inference_steps: int, sigma_min: float | None = None, sigma_max: float | None = None, sampling_eps: float | None = None)
```

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

**Parametreler:**

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

sigma_min (`float`, *isteğe bağlı*) : Başlangıç gürültü ölçeği değeri (zamanlayıcı anında oluşturulması sırasında verilen değeri geçersiz kılar).

sigma_max (`float`, *isteğe bağlı*) : Son gürültü ölçeği değeri (zamanlayıcı anında oluşturulması sırasında verilen değeri geçersiz kılar).

sampling_eps (`float`, *isteğe bağlı*) : Son zaman adımı değeri (zamanlayıcı anında oluşturulması sırasında verilen değeri geçersiz kılar).

Difüzyon zinciri için kullanılan gürültü ölçeklerini ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır). Sigmalar, örnek güncellemesinin `drift` ve `diffusion` bileşenlerinin ağırlığını kontrol eder.

#### set_timesteps[[diffusers.ScoreSdeVeScheduler.set_timesteps]]

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

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

**Parametreler:**

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

sampling_eps (`float`, *isteğe bağlı*) : Son zaman adımı değeri (zamanlayıcı anında oluşturulması sırasında verilen değeri geçersiz kılar).

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

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

#### step_correct[[diffusers.ScoreSdeVeScheduler.step_correct]]

```python
step_correct(model_output: Tensor, sample: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
```

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

**Parametreler:**

model_output (`torch.Tensor`) : Öğrenen difüzyon modelinden gelen doğrudan çıktı.

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

generator (`torch.Generator`, *isteğe bağlı*) : Rastgele sayı üreteci.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : [SchedulerOutput](/docs/diffusers/main/tr/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) mu yoksa `tuple` mu döndürüleceğini belirtir.

**Dönüş:** [SchedulerOutput](/docs/diffusers/main/tr/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) veya `tuple`

return_dict `True` ise [SchedulerOutput](/docs/diffusers/main/tr/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) döndürülür, aksi halde bir tuple döndürülür ve bu tuple'ın ilk öğesi örnek tensörüdür.

Ağın `model_output`'una göre tahmin edilen örneği düzeltin. Bu işlem, genellikle bir önceki zaman adımının tahmini yapıldıktan sonra tekrar tekrar çalıştırılır.

#### step_pred[[diffusers.ScoreSdeVeScheduler.step_pred]]

```python
step_pred(model_output: Tensor, timestep: int, sample: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
```

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

**Parametreler:**

model_output (`torch.Tensor`) : Öğrenen difüzyon modelinden gelen doğrudan çıktı.

timestep (`int`) : Difüzyon zincirindeki mevcut ayrık zaman adımı.

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

generator (`torch.Generator`, *isteğe bağlı*) : Rastgele sayı üreteci.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : [SdeVeOutput](/docs/diffusers/main/tr/api/schedulers/score_sde_ve#diffusers.schedulers.scheduling_sde_ve.SdeVeOutput) mu yoksa `tuple` mu döndürüleceğini belirtir.

**Dönüş:** [SdeVeOutput](/docs/diffusers/main/tr/api/schedulers/score_sde_ve#diffusers.schedulers.scheduling_sde_ve.SdeVeOutput) veya `tuple`

return_dict `True` ise [SdeVeOutput](/docs/diffusers/main/tr/api/schedulers/score_sde_ve#diffusers.schedulers.scheduling_sde_ve.SdeVeOutput) döndürülür, aksi takdirde 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.

## SdeVeOutput[[diffusers.schedulers.scheduling_sde_ve.SdeVeOutput]]

#### diffusers.schedulers.scheduling_sde_ve.SdeVeOutput[[diffusers.schedulers.scheduling_sde_ve.SdeVeOutput]]

```python
diffusers.schedulers.scheduling_sde_ve.SdeVeOutput(prev_sample: Tensor, prev_sample_mean: Tensor)
```

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

**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.

prev_sample_mean (`torch.Tensor`, görüntüler için şekli `(batch_size, num_channels, height, width)`) : Önceki zaman adımları üzerinde ortalama alınmış `prev_sample`.

Zamanlayıcının `step` işlevi çıktısı için çıktı sınıfı.

