# ScoreSdeVeScheduler

`ScoreSdeVeScheduler` adalah penjadwal persamaan diferensial stokastik (SDE) dengan varians yang meledak. Penjadwal ini diperkenalkan dalam makalah [Score-Based Generative Modeling through Stochastic Differential Equations](https://huggingface.co/papers/2011.13456) oleh Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon, dan Ben Poole.

Abstrak dari makalah tersebut adalah:

*Membuat noise dari data itu mudah; membuat data dari noise adalah pemodelan generatif. Kami menyajikan persamaan diferensial stokastik (SDE) yang secara halus mengubah distribusi data yang kompleks menjadi distribusi prior yang diketahui dengan perlahan menyuntikkan noise, dan SDE waktu-terbalik yang sesuai yang mengubah distribusi prior kembali menjadi distribusi data dengan perlahan menghilangkan noise. Yang krusial, SDE waktu-terbalik hanya bergantung pada medan gradien yang bergantung waktu (\aka, skor) dari distribusi data yang terganggu. Dengan memanfaatkan kemajuan dalam pemodelan generatif berbasis skor, kami dapat memperkirakan skor-skor ini secara akurat dengan jaringan saraf, dan menggunakan solver SDE numerik untuk menghasilkan sampel. Kami menunjukkan bahwa kerangka kerja ini merangkum pendekatan-pendekatan sebelumnya dalam pemodelan generatif berbasis skor dan pemodelan probabilistik difusi, memungkinkan prosedur sampling baru dan kemampuan pemodelan baru. Secara khusus, kami memperkenalkan kerangka kerja predictor-corrector untuk mengoreksi kesalahan dalam evolusi SDE waktu-terbalik yang diskritisasi. Kami juga menurunkan neural ODE yang ekuivalen yang mengambil sampel dari distribusi yang sama seperti SDE, tetapi juga memungkinkan komputasi likelihood yang tepat, dan efisiensi sampling yang lebih baik. Selain itu, kami menyediakan cara baru untuk menyelesaikan masalah invers dengan model berbasis skor, seperti yang ditunjukkan dengan eksperimen pada generasi bersyarat kelas, inpainting gambar, dan pewarnaan. Digabungkan dengan beberapa peningkatan arsitektural, kami mencapai kinerja pemecahan rekor untuk generasi gambar tanpa syarat pada CIFAR-10 dengan skor Inception 9.89 dan FID 2.20, likelihood yang kompetitif 2.99 bits/dim, dan mendemonstrasikan generasi berkeandalan tinggi gambar 1024 x 1024 untuk pertama kalinya dari model generatif berbasis skor.*

## 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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L45)

**Parameter:**

num_train_timesteps (`int`, defaultnya 2000) : Jumlah langkah difusi untuk melatih model.

snr (`float`, default 0.15) : Koefisien yang memberi bobot pada langkah dari sampel `model_output` (dari jaringan) ke noise acak.

sigma_min (`float`, defaultnya 0.01) : Skala noise awal untuk urutan sigma dalam prosedur sampling. Sigma minimum harus mencerminkan distribusi data.

sigma_max (`float`, defaultnya 1348.0) : Nilai maksimum yang digunakan untuk rentang timestep kontinu yang diteruskan ke model.

sampling_eps (`float`, defaultnya 1e-5) : Nilai akhir dari sampling di mana timestep berkurang secara progresif dari 1 hingga epsilon.

correct_steps (`int`, defaultnya 1) : Jumlah langkah koreksi yang dilakukan pada sampel yang dihasilkan.

`ScoreSdeVeScheduler` adalah penjadwal persamaan diferensial stokastik (SDE) dengan varians yang meledak.

Model ini mewarisi dari [SchedulerMixin](/docs/diffusers/v0.43.0/id/api/schedulers/overview#diffusers.SchedulerMixin) dan [ConfigMixin](/docs/diffusers/v0.43.0/id/api/configuration#diffusers.ConfigMixin). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan pustaka ini untuk semua scheduler, seperti pemuatan dan penyimpanan.

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

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

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L300)

**Parameter:**

original_samples (`torch.Tensor`) : Sampel asli yang akan ditambahkan dengan noise.

noise (`torch.Tensor`) : Tensor noise yang akan ditambahkan ke sampel asli.

timesteps (`torch.Tensor`) : Langkah waktu untuk menambahkan noise, yang menentukan tingkat noise dari jadwal.

**Mengembalikan:** `torch.Tensor`

Sampel berisik dengan tambahan noise yang diskalakan sesuai dengan jadwal timestep.

Tambahkan noise ke sampel asli sesuai dengan jadwal noise pada timestep yang ditentukan. Ini adalah proses difusi maju.

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

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

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L156)

**Parameter:**

timesteps (`torch.Tensor`) : Tensor dari indeks timestep diskrit.

t (`torch.Tensor`) : Tensor dari nilai timestep kontinu.

**Mengembalikan:** `torch.Tensor`

Nilai sigma untuk indeks timestep yang bersebelahan (sebelumnya).

Mengembalikan nilai sigma yang sesuai dengan indeks timestep sebelumnya. Ketika timestep bernilai nol (tidak ada timestep sebelumnya), mengembalikan nol.

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

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

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L88)

**Parameter:**

sample (`torch.Tensor`) : Sampel input.

timestep (`int`, *opsional*) : Langkah waktu (timestep) saat ini dalam rantai difusi.

**Mengembalikan:** `torch.Tensor`

Contoh input yang diskalakan.

Memastikan interoperabilitas dengan scheduler yang perlu menskalakan input model denoising berdasarkan timestep saat ini.

#### 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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L124)

**Parameter:**

num_inference_steps (`int`) : Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih sebelumnya.

sigma_min (`float`, *opsional*) : Nilai skala noise awal (menimpa nilai yang diberikan saat instansiasi scheduler).

sigma_max (`float`, *opsional*) : Nilai skala noise akhir (menimpa nilai yang diberikan saat instansiasi scheduler).

sampling_eps (`float`, *opsional*) : Nilai timestep akhir (menimpa nilai yang diberikan saat instansiasi scheduler).

Menetapkan skala noise yang digunakan untuk rantai difusi (harus dijalankan sebelum inferensi). Sigma mengontrol bobot komponen `drift` dan `diffusion` dari pembaruan sampel.

#### 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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L105)

**Parameter:**

num_inference_steps (`int`) : Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih sebelumnya.

sampling_eps (`float`, *opsional*) : Nilai timestep akhir (menimpa nilai yang diberikan saat instansiasi scheduler).

device (`str` atau `torch.device`, *opsional*) : Perangkat tempat timestep harus dipindahkan. Jika `None`, timestep tidak dipindahkan.

Menetapkan langkah waktu kontinu yang digunakan untuk rantai difusi (untuk dijalankan sebelum inferensi).

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

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

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L245)

**Parameter:**

model_output (`torch.Tensor`) : Output langsung dari model difusi yang telah dipelajari.

sample (`torch.Tensor`) : Instans saat ini dari sampel yang dibuat oleh proses difusi.

generator (`torch.Generator`, *opsional*) : Generator angka acak.

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [SchedulerOutput](/docs/diffusers/v0.43.0/id/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) atau `tuple`.

**Mengembalikan:** [SchedulerOutput](/docs/diffusers/v0.43.0/id/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) atau `tuple`

If return_dict is `True`, [SchedulerOutput](/docs/diffusers/v0.43.0/id/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) dikembalikan, selain itu sebuah tuple dikembalikan di mana elemen pertama adalah tensor sampel.

Perbaiki sampel prediksi berdasarkan `model_output` dari jaringan. Hal ini sering dijalankan secara berulang setelah membuat prediksi untuk timestep sebelumnya.

#### 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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L177)

**Parameter:**

model_output (`torch.Tensor`) : Output langsung dari model difusi yang telah dipelajari.

timestep (`int`) : Langkah waktu diskret saat ini dalam rantai difusi.

sample (`torch.Tensor`) : Instans saat ini dari sampel yang dibuat oleh proses difusi.

generator (`torch.Generator`, *opsional*) : Generator angka acak.

return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan [SdeVeOutput](/docs/diffusers/v0.43.0/id/api/schedulers/score_sde_ve#diffusers.schedulers.scheduling_sde_ve.SdeVeOutput) atau `tuple`.

**Mengembalikan:** [SdeVeOutput](/docs/diffusers/v0.43.0/id/api/schedulers/score_sde_ve#diffusers.schedulers.scheduling_sde_ve.SdeVeOutput) atau `tuple`

If return_dict is `True`, [SdeVeOutput](/docs/diffusers/v0.43.0/id/api/schedulers/score_sde_ve#diffusers.schedulers.scheduling_sde_ve.SdeVeOutput) is returned, otherwise a tuple is returned where the first element is the sample tensor.

Prediksi sampel dari langkah waktu sebelumnya dengan membalik SDE. Fungsi ini menyebarkan proses difusi dari keluaran model yang dipelajari (paling sering berupa noise yang diprediksi).

## 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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_sde_ve.py#L29)

**Parameter:**

prev_sample (`torch.Tensor` dengan bentuk `(batch_size, num_channels, height, width)` untuk gambar) : Sampel `(x_{t-1})` yang dihitung dari timestep sebelumnya. `prev_sample` harus digunakan sebagai input model berikutnya dalam loop denoising.

prev_sample_mean (`torch.Tensor` dengan bentuk `(batch_size, num_channels, height, width)` untuk gambar) : Rata-rata `prev_sample` yang dirata-ratakan di atas timestep sebelumnya.

Kelas output untuk output fungsi `step` scheduler.

