# EulerAncestralDiscreteScheduler

مجدول يستخدم العينة الأصلية مع خطوات طريقة أويلر. هذا مجدول سريع يمكنه غالبًا توليد مخرجات جيدة في 20-30 خطوة. يعتمد المجدول على التنفيذ الأصلي لـ [k-diffusion](https://github.com/crowsonkb/k-diffusion/blob/481677d114f6ea445aa009cf5bd7a9cdee909e47/k_diffusion/sampling.py#L72) بواسطة [Katherine Crowson](https://github.com/crowsonkb/).

## EulerAncestralDiscreteScheduler[[diffusers.EulerAncestralDiscreteScheduler]]

#### diffusers.EulerAncestralDiscreteScheduler[[diffusers.EulerAncestralDiscreteScheduler]]

```python
diffusers.EulerAncestralDiscreteScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: str = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, prediction_type: str = 'epsilon', timestep_spacing: str = 'linspace', steps_offset: int = 0, rescale_betas_zero_snr: bool = False)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_euler_ancestral_discrete.py#L140)

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

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

beta_start (`float`، القيمة الافتراضية 0.0001) : القيمة الابتدائية لـ`beta` أثناء الاستدلال.

beta_end (`float`، القيمة الافتراضية 0.02) : القيمة النهائية لـ`beta`.

beta_schedule (`"linear"` أو `"scaled_linear"` أو `"squaredcos_cap_v2"`، الافتراضي هو `"linear"`) : جدول بيتا، وهو إسقاط من نطاق بيتا إلى سلسلة من قيم بيتا لتقدم النموذج خطوة بخطوة. اختر من بين `linear` أو `scaled_linear` أو `squaredcos_cap_v2`.

trained_betas (`np.ndarray`، *اختياري*) : مرر مصفوفة من قيم بيتا مباشرةً إلى منشئ الكائن لتجاوز `beta_start` و`beta_end`.

prediction_type (`"epsilon"`, `"sample"`, or `"v_prediction"`, defaults to `"epsilon"`, *optional*) : Prediction type of the scheduler function; can be `epsilon` (predicts the noise of the diffusion process), `sample` (directly predicts the noisy sample`) or `v_prediction` (see section 2.4 of [Imagen Video](https://huggingface.co/papers/2210.02303) paper).

timestep_spacing (`"linspace"`, `"leading"`, or `"trailing"`, defaults to `"linspace"`) : The way the timesteps should be scaled. Refer to Table 2 of the [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) for more information.

steps_offset (`int`، القيمة الافتراضية 0) : إزاحة تُضاف إلى خطوات الاستدلال، كما تتطلبها بعض عائلات النماذج.

rescale_betas_zero_snr (`bool`، القيمة الافتراضية `False`) : ما إذا كان يجب إعادة مقياس معاملات بيتا (betas) بحيث يكون SNR النهائي صفراً. يتيح هذا النموذج توليد عينات ساطعة جداً ومظلمة جداً بدلاً من تقييده بتوليد عينات بإضاءة متوسطة. له علاقة غير مباشرة بـ [`--offset_noise`](https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506).

العينة الأصلية بخطوات طريقة أويلر.

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

#### add_noise[[diffusers.EulerAncestralDiscreteScheduler.add_noise]]

```python
add_noise(original_samples: Tensor, noise: Tensor, timesteps: Tensor)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_euler_ancestral_discrete.py#L479)

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

original_samples (`torch.Tensor`) : العينات الأصلية التي سيتم إضافة الضوضاء إليها.

noise (`torch.Tensor`) : متجه الضوضاء الذي يُضاف إلى العينات الأصلية.

timesteps (`torch.Tensor`) : الخطوات الزمنية التي يُضاف عندها الضوضاء، مما يحدد مستوى الضوضاء من الجدول الزمني.

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

العينات الضوضائية مع ضوضاء مضافة مُقيّمة وفقًا لجدول خطوات الزمن.

أضف الضوضاء إلى العينات الأصلية وفقًا لجدول الضوضاء عند خطوات الزمن المحددة.

#### index_for_timestep[[diffusers.EulerAncestralDiscreteScheduler.index_for_timestep]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_euler_ancestral_discrete.py#L330)

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

timestep (`float` أو `torch.Tensor`) : قيمة خطوة الزمن التي يجب البحث عنها في الجدول الزمني.

schedule_timesteps (`torch.Tensor`، *اختياري*) : جدول خطوات الزمن للبحث فيه. إذا كان `None`، يتم استخدام `self.timesteps`.

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

مؤشر خطوة الزمن في الجدول. بالنسبة للخطوة الأولى تمامًا، يُرجع المؤشر الثاني إذا كانت هناك تطابقات متعددة، لتجنب تجاوز قيمة سيجما عند البدء من منتصف الجدول (مثلًا، في تحويل الصورة إلى صورة).

ابحث عن فهرس خطوة زمنية محددة في جدول الخطوات الزمنية.

#### scale_model_input[[diffusers.EulerAncestralDiscreteScheduler.scale_model_input]]

```python
scale_model_input(sample: Tensor, timestep: typing.Union[float, torch.Tensor])
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_euler_ancestral_discrete.py#L261)

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

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

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

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

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

يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية. يحجم مدخلات نموذج إزالة الضوضاء بواسطة `(sigma**2 + 1) ** 0.5` ليتوافق مع خوارزمية أويلر.

#### set_begin_index[[diffusers.EulerAncestralDiscreteScheduler.set_begin_index]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_euler_ancestral_discrete.py#L251)

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

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

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

#### set_timesteps[[diffusers.EulerAncestralDiscreteScheduler.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_euler_ancestral_discrete.py#L285)

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

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

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

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

#### خطوة[[diffusers.EulerAncestralDiscreteScheduler.step]]

```python
step(model_output: Tensor, timestep: typing.Union[float, torch.Tensor], sample: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_euler_ancestral_discrete.py#L376)

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

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

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

sample (`torch.Tensor`) : نسخة حالية من عينة تم إنشاؤها بواسطة عملية الانتشار.

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

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [EulerAncestralDiscreteSchedulerOutput](/docs/diffusers/main/ar/api/schedulers/euler_ancestral#diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput) أو tuple.

**يعيد:** [EulerAncestralDiscreteSchedulerOutput](/docs/diffusers/main/ar/api/schedulers/euler_ancestral#diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput) أو `tuple`

إذا كانت قيمة return_dict هي `True`، يُعاد [EulerAncestralDiscreteSchedulerOutput](/docs/diffusers/main/ar/api/schedulers/euler_ancestral#diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput)، وإلا يُعاد tuple يكون عنصره الأول هو tensor العينة.

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

## EulerAncestralDiscreteSchedulerOutput[[diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput]]

#### diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput[[diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput]]

```python
diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteSchedulerOutput(prev_sample: Tensor, pred_original_sample: typing.Optional[torch.Tensor] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_euler_ancestral_discrete.py#L33)

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

prev_sample (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` للصور) : العينة المحسوبة `(x_{t-1})` لخطوة الزمن السابقة. يجب استخدام `prev_sample` كمدخل للنموذج التالي في حلقة إزالة الضوضاء.

pred_original_sample (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` للصور) : العينة المُتوقَّع إزالة الضوضاء منها `(x_{0})` بناءً على مخرجات النموذج من خطوة الزمن الحالية. يمكن استخدام `pred_original_sample` لمعاينة التقدم أو للإرشاد.

فئة الإخراج لدالة `step` الخاصة بالجدول الزمني.

