# FlowMatchHeunDiscreteScheduler

`FlowMatchHeunDiscreteScheduler` se basa en el muestreo por flow-matching introducido en [EDM](https://huggingface.co/papers/2403.03206).

## FlowMatchHeunDiscreteScheduler[[diffusers.FlowMatchHeunDiscreteScheduler]]

#### diffusers.FlowMatchHeunDiscreteScheduler[[diffusers.FlowMatchHeunDiscreteScheduler]]

```python
diffusers.FlowMatchHeunDiscreteScheduler(num_train_timesteps: int = 1000, shift: float = 1.0)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_heun_discrete.py#L43)

**Parámetros:**

num_train_timesteps (`int`, por defecto 1000) : El número de pasos de difusión para entrenar el modelo.

shift (`float`, por defecto 1.0) : El valor de desplazamiento para la programación de pasos de tiempo.

Programador Heun.

Este modelo hereda de [SchedulerMixin](/docs/diffusers/main/es/api/schedulers/overview#diffusers.SchedulerMixin) y [ConfigMixin](/docs/diffusers/main/es/api/configuration#diffusers.ConfigMixin). Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los programadores, como la carga y el guardado.

#### index_for_timestep[[diffusers.FlowMatchHeunDiscreteScheduler.index_for_timestep]]

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

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_heun_discrete.py#L179)

**Parámetros:**

timestep (`float` o `torch.FloatTensor`) : El valor de timestep a buscar en el schedule.

schedule_timesteps (`torch.FloatTensor`, *opcional*) : El calendario de pasos de tiempo en el que buscar. Si es `None`, usa `self.timesteps`.

**Devuelve:** `int`

El índice del paso de tiempo en la programación.

Encuentra el índice de un paso de tiempo dado en la programación de pasos de tiempo.

#### scale_noise[[diffusers.FlowMatchHeunDiscreteScheduler.scale_noise]]

```python
scale_noise(sample: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], noise: FloatTensor)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_heun_discrete.py#L106)

**Parámetros:**

sample (`torch.FloatTensor`) : La muestra de entrada.

timestep (`float` o `torch.FloatTensor`) : El paso temporal actual en la cadena de difusión.

noise (`torch.FloatTensor`) : El tensor de ruido.

**Devuelve:** `torch.FloatTensor`

Una muestra de entrada escalada.

Proceso de avance en flow-matching

#### set_begin_index[[diffusers.FlowMatchHeunDiscreteScheduler.set_begin_index]]

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

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_heun_discrete.py#L96)

**Parámetros:**

begin_index (`int`, por defecto `0`) : El índice inicial del programador.

Establece el índice inicial para el programador. Esta función debe ejecutarse desde la tubería antes de la inferencia.

#### set_timesteps[[diffusers.FlowMatchHeunDiscreteScheduler.set_timesteps]]

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

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_heun_discrete.py#L139)

**Parámetros:**

num_inference_steps (`int`) : El número de pasos de difusión utilizados al generar muestras con un modelo preentrenado.

device (`str` o `torch.device`, *opcional*) : El dispositivo al que deben moverse los pasos de tiempo. Si es `None`, los pasos de tiempo no se mueven.

Establece los pasos discretos utilizados para la cadena de difusión (para ejecutarse antes de la inferencia).

#### paso[[diffusers.FlowMatchHeunDiscreteScheduler.step]]

```python
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, s_churn: float = 0.0, s_tmin: float = 0.0, s_tmax: float = inf, s_noise: float = 1.0, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_flow_match_heun_discrete.py#L225)

**Parámetros:**

model_output (`torch.FloatTensor`) : La salida directa del modelo de difusión aprendido.

timestep (`float` o `torch.FloatTensor`) : El paso de tiempo discreto actual en la cadena de difusión.

sample (`torch.FloatTensor`) : Una instancia actual de una muestra creada por el proceso de difusión.

s_churn (`float`) : Parámetro de estocasticidad que controla la cantidad de ruido añadido durante el muestreo. Valores más altos aumentan la aleatoriedad.

s_tmin (`float`) : Umbral mínimo de paso temporal para aplicar estocasticidad. Solo se añadirá ruido a los pasos temporales que superen este valor.

s_tmax (`float`) : Umbral máximo de paso temporal para aplicar estocasticidad. Solo se añadirá ruido a los pasos temporales por debajo de este valor.

s_noise (`float`, por defecto 1.0) : Factor de escala para el ruido añadido a la muestra.

generator (`torch.Generator`, *opcional*) : Un generador de números aleatorios.

return_dict (`bool`) : Indica si se debe devolver una tupla `FlowMatchHeunDiscreteSchedulerOutput`.

**Devuelve:** `FlowMatchHeunDiscreteSchedulerOutput` o `tuple`

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

Predice la muestra del paso de tiempo anterior invirtiendo el SDE. Esta función propaga el proceso de difusión desde las salidas del modelo aprendido (con mayor frecuencia, el ruido predicho).

