# FlowMatchEulerDiscreteScheduler

`FlowMatchEulerDiscreteScheduler` مبني على أخذ العينات المطابق للتدفق (flow-matching sampling) الذي تم تقديمه في [Stable Diffusion 3](https://huggingface.co/papers/2403.03206).

## FlowMatchEulerDiscreteScheduler[[diffusers.FlowMatchEulerDiscreteScheduler]]

#### diffusers.FlowMatchEulerDiscreteScheduler[[diffusers.FlowMatchEulerDiscreteScheduler]]

```python
diffusers.FlowMatchEulerDiscreteScheduler(num_train_timesteps: int = 1000, shift: float = 1.0, use_dynamic_shifting: bool = False, base_shift: float | None = 0.5, max_shift: float | None = 1.15, base_image_seq_len: int = 256, max_image_seq_len: int = 4096, invert_sigmas: bool = False, shift_terminal: float = None, use_karras_sigmas: bool = False, use_exponential_sigmas: bool = False, use_beta_sigmas: bool = False, time_shift_type: typing.Literal['exponential', 'linear'] = 'exponential', stochastic_sampling: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L48)

**المعاملات:**

num_train_timesteps (`int`، القيمة الافتراضية 1000) : عدد خطوات الانتشار لتدريب النموذج.

shift (`float`، القيمة الافتراضية 1.0) : قيمة الإزاحة لجدول خطوات الزمن.

use_dynamic_shifting (`bool`، القيمة الافتراضية False) : ما إذا كان سيتم تطبيق إزاحة خطوة الزمن (timestep shifting) على الفور بناءً على دقة الصورة.

base_shift (`float`، القيمة الافتراضية 0.5) : القيمة المستخدمة لتثبيت توليد الصور. زيادة `base_shift` تقلل من التباين وتجعل الصورة أكثر اتساقًا مع المخرجات المطلوبة.

max_shift (`float`، القيمة الافتراضية 1.15) : مقدار التغيير المسموح به في المتجهات الكامنة. زيادة `max_shift` تشجع على مزيد من التنوع، وقد تصبح الصورة أكثر مبالغة أو تنسيقًا.

base_image_seq_len (`int`، القيمة الافتراضية 256) : طول تسلسل الصورة الأساسي.

max_image_seq_len (`int`، القيمة الافتراضية 4096) : الحد الأقصى لطول تسلسل الصورة.

invert_sigmas (`bool`، القيمة الافتراضية False) : ما إذا كان يجب عكس قيم sigmas.

shift_terminal (`float`، القيمة الافتراضية هي None) : القيمة النهائية لجدول خطوات الزمن المُزاحة.

use_karras_sigmas (`bool`، القيمة الافتراضية False) : ما إذا كان سيتم استخدام قيم Karras sigmas لحجم الخطوات في جدول الضوضاء أثناء أخذ العينات.

use_exponential_sigmas (`bool`، القيمة الافتراضية False) : ما إذا كان سيتم استخدام قيم سيجما أسية لحجم الخطوات في جدول الضوضاء أثناء أخذ العينات.

use_beta_sigmas (`bool`، القيمة الافتراضية False) : ما إذا كان سيتم استخدام بيتا سيغما لحجم الخطوات في جدول الضوضاء أثناء أخذ العينات.

time_shift_type (`str`، القيمة الافتراضية "exponential") : نوع إزاحة خطوات الزمن المعتمدة على الدقة الديناميكية التي سيتم تطبيقها. إما "exponential" أو "linear".

stochastic_sampling (`bool`، القيمة الافتراضية False) : ما إذا كان سيتم استخدام العينة العشوائية.

مجدول أويلر.

يرث هذا النموذج من [SchedulerMixin](/docs/diffusers/v0.43.0/ar/api/schedulers/overview#diffusers.SchedulerMixin) و [ConfigMixin](/docs/diffusers/v0.43.0/ar/api/configuration#diffusers.ConfigMixin). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدولات التعلم، مثل التحميل والحفظ.

#### index_for_timestep[[diffusers.FlowMatchEulerDiscreteScheduler.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/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L393)

**المعاملات:**

timestep (`float` أو `torch.FloatTensor`) : خطوة الزمن التي سيتم البحث عن فهرسها.

schedule_timesteps (`torch.FloatTensor`، *اختياري*) : خطوات الجدولة الزمنية التي سيتم التحقق منها. إذا كانت `None`، تُستخدم خطوات الجدولة الزمنية الخاصة بمجدول الوقت.

**يعيد:** `int`

مؤشر خطوة الزمن.

احصل على فهرس خطوة الزمن المعطاة.

#### scale_noise[[diffusers.FlowMatchEulerDiscreteScheduler.scale_noise]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L188)

**المعاملات:**

sample (`torch.FloatTensor`) : العينة المدخلة.

timestep (`torch.FloatTensor`) : الخطوة الزمنية الحالية في سلسلة الانتشار.

noise (`torch.FloatTensor`) : متجه الضوضاء.

**يعيد:** `torch.FloatTensor`

عينة إدخال مُقيّمة.

العملية الأمامية في مطابقة التدفق

#### set_begin_index[[diffusers.FlowMatchEulerDiscreteScheduler.set_begin_index]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L168)

**المعاملات:**

begin_index (`int`، القيمة الافتراضية `0`) : فهرس البداية للمجدول.

يحدد الفهرس الابتدائي للمجدول. يجب تشغيل هذه الدالة من خط الأنابيب قبل الاستدلال.

#### set_shift[[diffusers.FlowMatchEulerDiscreteScheduler.set_shift]]

```python
set_shift(shift: float)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L178)

**المعاملات:**

shift (`float`) : قيمة الإزاحة التي سيتم ضبطها.

يحدد قيمة الإزاحة للمجدول.

#### set_timesteps[[diffusers.FlowMatchEulerDiscreteScheduler.set_timesteps]]

```python
set_timesteps(num_inference_steps: int | None = None, device: typing.Union[str, torch.device] = None, sigmas: list[float] | None = None, mu: float | None = None, timesteps: list[float] | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L283)

**المعاملات:**

num_inference_steps (`int`، *اختياري*) : عدد خطوات الانتشار المستخدمة عند توليد العينات باستخدام نموذج مُدرَّب مسبقًا.

device (`str` أو `torch.device`، *اختياري*) : الجهاز الذي يجب نقل خطوات الزمن (timesteps) إليه. إذا كان `None`، فلن يتم نقل خطوات الزمن.

sigmas (`list[float]`، *اختياري*) : قيم مخصصة لـ sigmas تُستخدم لكل خطوة من خطوات الانتشار. إذا كانت `None`، تُحسب قيم sigmas تلقائيًا.

mu (`float`، *اختياري*) : يحدد مقدار الإزاحة المطبقة على قيم sigmas عند تنفيذ إزاحة خطوات الزمن المعتمدة على الدقة.

timesteps (`list[float]`، *اختياري*) : قيم مخصصة لخطوات الزمن (timesteps) التي سيتم استخدامها في كل خطوة من خطوات الانتشار. إذا كانت `None`، تُحسب خطوات الزمن تلقائيًا.

يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).

#### خطوة[[diffusers.FlowMatchEulerDiscreteScheduler.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, per_token_timesteps: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L432)

**المعاملات:**

model_output (`torch.FloatTensor`) : المخرجات المباشرة من نموذج الانتشار المُتعلَّم.

timestep (`float`) : الخطوة الزمنية المنفصلة الحالية في سلسلة الانتشار.

sample (`torch.FloatTensor`) : نسخة حالية من عينة أنشأها عملية الانتشار.

s_churn (`float`) --

s_tmin (`float`) --

s_tmax (`float`) --

s_noise (`float`، القيمة الافتراضية 1.0) : معامل التدرج للضوضاء المضافة إلى العينة.

generator (`torch.Generator`، *اختياري*) : مولّد أرقام عشوائية.

per_token_timesteps (`torch.Tensor`، *اختياري*) : خطوات الزمن لكل رمز في العينة.

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `FlowMatchEulerDiscreteSchedulerOutput` أو tuple.

**يعيد:** `FlowMatchEulerDiscreteSchedulerOutput` أو `tuple`

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

تنبّأ بالعيّنة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المُتعلَّم (والتي تكون في الغالب الضوضاء المتنبَّأ بها).

#### stretch_shift_to_terminal[[diffusers.FlowMatchEulerDiscreteScheduler.stretch_shift_to_terminal]]

```python
stretch_shift_to_terminal(t: Tensor)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L262)

**المعاملات:**

t (`torch.Tensor`) : متجه (Tensor) لخطوات الزمن (timesteps) التي سيتم تمديدها وإزاحتها.

**يعيد:** `torch.Tensor`

مصفوفة (Tensor) من خطوات الزمن المُعدَّلة بحيث تكون القيمة النهائية مساوية لـ `self.config.shift_terminal`.

يمدّ جدول خطوات الزمن ويحرّكه لضمان أنه ينتهي عند قيمة الإعداد `shift_terminal` المُحدَّدة.

مرجع: https://github.com/Lightricks/LTX-Video/blob/a01a171f8fe3d99dce2728d60a73fecf4d4238ae/ltx_video/schedulers/rf.py#L51

#### time_shift[[diffusers.FlowMatchEulerDiscreteScheduler.time_shift]]

```python
time_shift(mu: float, sigma: float, t: Tensor)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_flow_match_euler_discrete.py#L241)

**المعاملات:**

mu (`float`) : معامل mu الخاص بإزاحة الوقت.

sigma (`float`) : معامل سيجما الخاص بإزاحة الوقت.

t (`torch.Tensor`) : خطوات الزمن المدخلة.

**يعيد:** `torch.Tensor`

خطوات الزمن المُزاحة.

طبّق إزاحةً زمنية على قيم sigmas.

