# FlowMatchHeunDiscreteScheduler

`FlowMatchHeunDiscreteScheduler`는 [EDM](https://huggingface.co/papers/2403.03206)에서 소개된 flow-matching 샘플링을 기반으로 합니다.

## FlowMatchHeunDiscreteScheduler[[diffusers.FlowMatchHeunDiscreteScheduler]]

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

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

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

**매개변수:**

num_train_timesteps (`int`, 기본값 1000) : 모델을 학습하기 위한 diffusion step 수입니다.

shift (`float`, 기본값 1.0) : 타임스텝 스케줄의 시프트 값입니다.

Heun 스케줄러.

이 모델은 [SchedulerMixin](/docs/diffusers/main/ko/api/schedulers/overview#diffusers.SchedulerMixin)과 [ConfigMixin](/docs/diffusers/main/ko/api/configuration#diffusers.ConfigMixin)을 상속합니다. 로딩 및 저장과 같은 모든 스케줄러에 대해 라이브러리가 구현하는 일반적 메서드에 대해서는 상위 클래스 문서를 확인하세요.

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

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

**매개변수:**

timestep (`float` 또는 `torch.FloatTensor`) : 스케줄에서 찾을 타임스텝 값.

schedule_timesteps (`torch.FloatTensor`, *선택 사항*) : 검색할 timestep schedule입니다. `None`인 경우 `self.timesteps`를 사용합니다.

**반환값:** `int`

schedule에서 timestep의 인덱스입니다.

…

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

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

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

**매개변수:**

sample (`torch.FloatTensor`) : 입력 샘플.

timestep (`float` 또는 `torch.FloatTensor`) : diffusion chain의 현재 timestep입니다.

noise (`torch.FloatTensor`) : 노이즈 텐서.

**반환값:** `torch.FloatTensor`

스케일된 입력 샘플.

Flow-matching의 forward process

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

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

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

**매개변수:**

begin_index (`int`, 기본값 `0`) : 스케줄러의 시작 인덱스입니다.

… 스케줄러의 시작 인덱스를 설정합니다. 이 함수는 추론 전에 파이프라인에서 실행해야 합니다.

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

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

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

**매개변수:**

num_inference_steps (`int`) : 사전 학습된 모델로 샘플을 생성할 때 사용되는 확산 단계의 수.

device (`str` 또는 `torch.device`, *선택 사항*) : timesteps를 이동할 대상 device입니다. `None`인 경우 timesteps는 이동되지 않습니다.

추론 실행 전에 실행할 diffusion chain에 사용할 이산 timesteps를 설정합니다.

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

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

**매개변수:**

model_output (`torch.FloatTensor`) : 학습된 diffusion 모델의 직접 출력입니다.

timestep (`float` 또는 `torch.FloatTensor`) : 확산 체인(diffusion chain)의 현재 이산 시간 단계(discrete timestep).

sample (`torch.FloatTensor`) : 확산 과정에서 생성된 샘플의 현재 인스턴스.

s_churn (`float`) : 샘플링 과정에서 추가되는 노이즈의 양을 제어하는 확률성 파라미터입니다. 값이 높을수록 무작위성이 증가합니다.

s_tmin (`float`) : 확률성을 적용하기 위한 최소 timestep 임계값입니다. 이 값보다 큰 timestep에만 노이즈가 추가됩니다.

s_tmax (`float`) : 확률성을 적용할 최대 timestep 임계값입니다. 이 값보다 작은 timestep에만 노이즈가 추가됩니다.

s_noise (`float`, 기본값 1.0) : 샘플에 추가되는 노이즈의 스케일링 계수.

generator (`torch.Generator`, *선택 사항*) : 난수 생성기입니다.

return_dict (`bool`) : `FlowMatchHeunDiscreteSchedulerOutput` 튜플을 반환할지 여부.

**반환값:** `FlowMatchHeunDiscreteSchedulerOutput` 또는 `tuple`

return_dict가 `True`인 경우 `FlowMatchHeunDiscreteSchedulerOutput`이 반환되고, 그렇지 않으면 첫 번째 요소가 샘플 텐서인 튜플이 반환됩니다.

이전 시간 단계의 샘플을 SDE를 역방향으로 적용하여 예측합니다. 이 함수는 학습된 모델의 출력(대부분 예측된 노이즈)으로부터 확산 과정을 전파합니다.

