# FlowMatchHeunDiscreteScheduler

`FlowMatchHeunDiscreteScheduler` é baseado na amostragem por flow-matching introduzida em [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)
```

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

**Parâmetros:**

num_train_timesteps (`int`, padrão 1000) : O número de etapas de difusão para treinar o modelo.

shift (`float`, padrão 1.0) : O valor de deslocamento para o cronograma de passos de tempo.

Agendador Heun.

Este modelo herda de [SchedulerMixin](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.SchedulerMixin) e [ConfigMixin](/docs/diffusers/main/pt/api/configuration#diffusers.ConfigMixin). Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os agendadores, como carregamento e salvamento.

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

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

**Parâmetros:**

timestep (`float` ou `torch.FloatTensor`) : O valor de timestep a ser encontrado no agendamento.

schedule_timesteps (`torch.FloatTensor`, *opcional*) : A agenda de passos de tempo a ser pesquisada. Se `None`, usa `self.timesteps`.

**Retorna:** `int`

O índice do timestep no agendamento.

Encontre o índice de um timestep específico na agenda de timesteps.

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

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

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

**Parâmetros:**

sample (`torch.FloatTensor`) : A amostra de entrada.

timestep (`float` ou `torch.FloatTensor`) : O timestep atual na cadeia de difusão.

noise (`torch.FloatTensor`) : O tensor de ruído.

**Retorna:** `torch.FloatTensor`

Uma amostra de entrada escalada.

Processo de propagação no flow-matching

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

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

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

**Parâmetros:**

begin_index (`int`, padrão `0`) : O índice inicial para o agendador.

Define o índice inicial para o agendador. Esta função deve ser executada a partir do pipeline antes da inferência.

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

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

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

**Parâmetros:**

num_inference_steps (`int`) : O número de etapas de difusão usadas ao gerar amostras com um modelo pré-treinado.

device (`str` ou `torch.device`, *opcional*) : O dispositivo para o qual os timesteps devem ser movidos. Se `None`, os timesteps não são movidos.

Define os passos discretos usados para a cadeia de difusão (a ser executado antes da inferência).

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

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

**Parâmetros:**

model_output (`torch.FloatTensor`) : A saída direta do modelo de difusão aprendido.

timestep (`float` ou `torch.FloatTensor`) : O passo de tempo discreto atual na cadeia de difusão.

sample (`torch.FloatTensor`) : Uma instância atual de uma amostra criada pelo processo de difusão.

s_churn (`float`) : Parâmetro de estocasticidade que controla a quantidade de ruído adicionado durante a amostragem. Valores maiores aumentam a aleatoriedade.

s_tmin (`float`) : Limite mínimo de timestep para aplicar estocasticidade. Somente timesteps acima deste valor terão ruído adicionado.

s_tmax (`float`) : Limite máximo de timestep para aplicar estocasticidade. Somente timesteps abaixo deste valor terão ruído adicionado.

s_noise (`float`, padrão 1.0) : Fator de escala para o ruído adicionado à amostra.

generator (`torch.Generator`, *opcional*) : Um gerador de números aleatórios.

return_dict (`bool`) : Se deve ou não retornar uma tupla `FlowMatchHeunDiscreteSchedulerOutput`.

**Retorna:** `FlowMatchHeunDiscreteSchedulerOutput` ou `tuple`

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

Preveja a amostra do passo de tempo anterior revertendo o SDE. Esta função propaga o processo de difusão a partir das saídas do modelo aprendido (na maioria das vezes, o ruído previsto).

