Diffusers documentation

HeunDiscreteScheduler

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

HeunDiscreteScheduler

Scheduler Heun (Algoritma 1) berasal dari paper Elucidating the Design Space of Diffusion-Based Generative Models oleh Karras dkk. Scheduler ini dipindahkan dari library k-diffusion dan dibuat oleh Katherine Crowson.

HeunDiscreteScheduler

kelas diffusers.HeunDiscreteScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'use_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseclip_sample: bool = Falseclip_sample_range: float = 1.0timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'steps_offset: int = 0 )

Parameter

  • num_train_timesteps (int, defaultnya 1000) — Jumlah langkah difusi untuk melatih model.
  • beta_start (float, defaultnya 0.0001) — Nilai beta awal untuk inferensi.
  • beta_end (float, defaultnya 0.02) — Nilai beta akhir.
  • beta_schedule ("linear", "scaled_linear", "squaredcos_cap_v2", atau "exp", defaultnya "linear") — Jadwal beta, pemetaan dari rentang beta ke urutan beta untuk melangkahkan model. Pilih dari linear, scaled_linear, squaredcos_cap_v2, atau exp.
  • trained_betas (np.ndarray, opsional) — Lewati beta_start dan beta_end dengan meneruskan array betas langsung ke konstruktor.
  • prediction_type ("epsilon", "sample", or "v_prediction", defaults to "epsilon", optional) — 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 paper).
  • clip_sample (bool, defaultnya True) — Memotong sampel yang diprediksi untuk stabilitas numerik.
  • clip_sample_range (float, default 1.0) — Magnitudo maksimum untuk pemotongan sampel. Hanya valid ketika clip_sample=True.
  • use_karras_sigmas (bool, opsional, default False) — Apakah akan menggunakan Karras sigmas untuk ukuran langkah dalam jadwal noise selama proses sampling. Jika True, sigma ditentukan berdasarkan urutan tingkat noise {σi}.
  • use_exponential_sigmas (bool, opsional, default False) — Apakah akan menggunakan sigma eksponensial untuk ukuran langkah dalam jadwal noise selama proses sampling.
  • use_beta_sigmas (bool, opsional, default False) — Apakah akan menggunakan beta sigmas untuk ukuran langkah dalam jadwal noise selama proses sampling. Lihat Beta Sampling is All You Need untuk informasi lebih lanjut.
  • timestep_spacing ("linspace", "leading", atau "trailing", defaultnya "linspace") — Cara timestep harus diskalakan. Lihat Tabel 2 dari Common Diffusion Noise Schedules and Sample Steps are Flawed untuk informasi lebih lanjut.
  • steps_offset (int, defaultnya 0) — Offset yang ditambahkan ke langkah inferensi, sesuai kebutuhan beberapa keluarga model.

Scheduler dengan langkah Heun untuk jadwal beta diskrit.

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.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Parameter

  • timestep (float atau torch.Tensor) — Nilai timestep yang akan dicari dalam jadwal.
  • schedule_timesteps (torch.Tensor, opsional) — Jadwal timestep yang akan dicari. Jika None, gunakan self.timesteps.

Mengembalikan

int

Indeks timestep dalam jadwal. Untuk langkah pertama, mengembalikan indeks kedua jika ada beberapa kecocokan untuk menghindari pengabaian sigma saat memulai di tengah jadwal (misalnya, untuk image-to-image).

Cari indeks dari timestep tertentu dalam jadwal timestep.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Parameter

  • sample (torch.Tensor) — Contoh input.
  • timestep (float atau torch.Tensor) — Langkah waktu 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_begin_index

< >

( begin_index: int = 0 )

Parameter

  • begin_index (int, defaultnya 0) — Indeks awal untuk scheduler.

Menetapkan indeks awal untuk penjadwal. Fungsi ini harus dijalankan dari pipeline sebelum inferensi.

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonenum_train_timesteps: int | None = Nonetimesteps: list[int] | None = None )

Parameter

  • num_inference_steps (int, opsional, defaultnya None) — Jumlah langkah difusi yang digunakan saat menghasilkan sampel dengan model terlatih.
  • device (str, torch.device, opsional, defaultnya None) — Perangkat tempat timesteps harus dipindahkan. Jika None, timesteps tidak dipindahkan.
  • num_train_timesteps (int, opsional, default None) — Jumlah langkah difusi yang digunakan saat melatih model. Jika None, atribut default num_train_timesteps akan digunakan.
  • timesteps (list[int], opsional) — Timesteps kustom yang digunakan untuk mendukung spasi arbitrer antar timesteps. Jika None, timesteps akan dibangkitkan berdasarkan atribut timestep_spacing. Jika timesteps diberikan, num_inference_steps harus berupa None, dan atribut timestep_spacing akan diabaikan.

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

langkah

< >

( 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 ) → HeunDiscreteSchedulerOutput or tuple

Parameter

  • model_output (torch.Tensor) — Output langsung dari model difusi yang dipelajari.
  • timestep (float) — Timestep diskrit saat ini dalam rantai difusi.
  • sample (torch.Tensor) — Instans saat ini dari sampel yang dibuat oleh proses difusi.
  • return_dict (bool) — Apakah akan mengembalikan HeunDiscreteSchedulerOutput atau tuple.

Mengembalikan

HeunDiscreteSchedulerOutput atau tuple

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

SchedulerOutput

kelas diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: 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.

Kelas dasar untuk keluaran dari fungsi step sebuah scheduler.

Update on GitHub