# IPNDMScheduler

`IPNDMScheduler` adalah scheduler Improved Pseudo Linear Multistep berorde empat. Implementasi aslinya dapat ditemukan di [crowsonkb/v-diffusion-pytorch](https://github.com/crowsonkb/v-diffusion-pytorch/blob/987f8985e38208345c1959b0ea767a625831cc9b/diffusion/sampling.py#L296).

## IPNDMScheduler[[diffusers.IPNDMScheduler]]

#### diffusers.IPNDMScheduler[[diffusers.IPNDMScheduler]]

```python
diffusers.IPNDMScheduler(num_train_timesteps: int = 1000, trained_betas: numpy.ndarray | list[float] | None = None)
```

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

**Parameter:**

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

trained_betas (`np.ndarray` atau `List[float]`, *opsional*) : Lewati `beta_start` dan `beta_end` dengan meneruskan array betas secara langsung ke konstruktor.

Scheduler Improved Pseudo Linear Multistep orde empat.

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.

#### index_for_timestep[[diffusers.IPNDMScheduler.index_for_timestep]]

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

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

**Parameter:**

timestep (`float` atau `torch.Tensor`) : Nilai timestep yang akan dicari dalam jadwal.

schedule_timesteps (`torch.Tensor`, *opsional*) : Jadwal timestep untuk dicari. Jika `None`, menggunakan `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[[diffusers.IPNDMScheduler.scale_model_input]]

```python
scale_model_input(sample: Tensor, *args, **kwargs)
```

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

**Parameter:**

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

**Mengembalikan:** `torch.Tensor`

Contoh input yang diskalakan.

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

#### set_begin_index[[diffusers.IPNDMScheduler.set_begin_index]]

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

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

**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[[diffusers.IPNDMScheduler.set_timesteps]]

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

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

**Parameter:**

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

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

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

#### langkah[[diffusers.IPNDMScheduler.step]]

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

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

**Parameter:**

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

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

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

return_dict (`bool`) : 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.

Prediksikan sampel dari langkah waktu sebelumnya dengan membalikkan SDE. Fungsi ini menyebarkan sampel dengan metode multistep linear. Fungsi ini melakukan satu kali forward pass beberapa kali untuk mengaproksimasi solusi.

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

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

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

Kelas dasar untuk keluaran dari fungsi `step` sebuah scheduler.

