Diffusers documentation

ScoreSdeVeScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

kelas diffusers.ScoreSdeVeScheduler

< >

( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )

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 dan ConfigMixin. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan pustaka ini untuk semua scheduler, seperti pemuatan dan penyimpanan.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

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) — Timesteps 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

< >

( timesteps: Tensort: Tensor ) → torch.Tensor

Parameter

  • timesteps (torch.Tensor) — Tensor dari indeks timestep diskrit.
  • t (torch.Tensor) — Tensor berisi 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 adalah nol (tidak ada timestep sebelumnya), mengembalikan nol.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.
  • timestep (int, opsional) — 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

< >

( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = None )

Parameter

  • num_inference_steps (int) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih.
  • 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

< >

( num_inference_steps: intsampling_eps: float | None = Nonedevice: typing.Union[str, torch.device, NoneType] = None )

Parameter

  • num_inference_steps (int) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih.
  • sampling_eps (float, opsional) — Nilai timestep akhir (menimpa nilai yang diberikan saat instansiasi scheduler).
  • device (str atau torch.device, opsional) — Perangkat tempat timesteps harus dipindahkan. Jika None, timesteps tidak dipindahkan.

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

step_correct

< >

( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple

Parameter

  • model_output (torch.Tensor) — Output langsung dari model difusi yang 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, default True) — Apakah akan mengembalikan SchedulerOutput atau tuple.

Mengembalikan

SchedulerOutput atau tuple

If return_dict is True, SchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

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

step_pred

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput or tuple

Parameter

  • model_output (torch.Tensor) — Output langsung dari model difusi yang dipelajari.
  • timestep (int) — Timestep diskrit 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 atau tuple.

Mengembalikan

SdeVeOutput atau tuple

If return_dict is True, 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

kelas diffusers.schedulers.scheduling_sde_ve.SdeVeOutput

< >

( prev_sample: Tensorprev_sample_mean: Tensor )

Parameter

  • prev_sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) untuk gambar) — Contoh yang dihitung (x_{t-1}) dari langkah waktu 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 penjadwal.

Update on GitHub