# Informer

## نظرة عامة

قُدِّم نموذج Informer في [Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting](https://huggingface.co/papers/2012.07436) من قِبل Haoyi Zhou وShanghang Zhang وJieqi Peng وShuai Zhang وJianxin Li وHui Xiong وWancai Zhang.

تُقدّم هذه الطريقة آلية انتباه احتمالي لاختيار الاستعلامات "النشطة" بدلاً من الاستعلامات "الخاملة"، وتوفّر بذلك محوّلاً متناثرًا، مما يخفّف من متطلبات الحساب والذاكرة التربيعية الخاصة بالانتباه التقليدي.

المستخلص من الورقة البحثية هو كالتالي:

*تتطلب العديد من التطبيقات الواقعية التنبؤ بسلاسل زمنية طويلة، مثل تخطيط استهلاك الكهرباء. يتطلب التنبؤ بالسلاسل الزمنية طويلة المدى (LSTF) قدرة تنبؤية عالية للنموذج، وهي القدرة على التقاط الاقتران الدقيق للعلاقات طويلة المدى بين المخرجات والمدخلات بكفاءة. أظهرت الدراسات الحديثة إمكانات نموذج Transformer في زيادة القدرة التنبؤية. ومع ذلك، هناك عدة مشكلات شديدة في Transformer تمنع تطبيقه المباشر على LSTF، بما في ذلك التعقيد الزمني التربيعي، والاستهلاك العالي للذاكرة، والقيود الجوهرية في بنية المُشفِّر-المُفكِّك (encoder-decoder). لمعالجة هذه المشكلات، صممنا نموذجًا فعالًا مبنيًا على Transformer للتنبؤ بالسلاسل الزمنية طويلة المدى، يُدعى Informer، ويتميز بثلاث خصائص مميزة: (i) آلية انتباه ذاتي احتمالية متناثرة (ProbSparse self-attention)، التي تحقق تعقيدًا زمنيًا واستهلاكًا للذاكرة بمقدار O(L logL)، ولها أداء قابل للمقارنة في محاذاة اعتماديات السلاسل. (ii) تقطير الانتباه الذاتي (self-attention distilling) يُبرز الانتباه المهيمن عن طريق تقسيم مدخلات الطبقات المتسلسلة إلى النصف، ويتعامل بكفاءة مع سلاسل المدخلات فائقة الطول. (iii) المُفكِّك بأسلوب توليدي (generative style decoder)، على الرغم من بساطته المفاهيمية، يتنبأ بسلاسل الزمن الطويلة في عملية تقدمية واحدة بدلاً من الطريقة خطوة بخطوة، مما يحسّن بشكل كبير سرعة الاستدلال للتنبؤات طويلة السلسلة. تُظهر تجارب موسعة على أربعة مجموعات بيانات كبيرة الحجم أن Informer يتفوق بشكل كبير على الأساليب الحالية ويوفر حلًا جديدًا لمشكلة LSTF.*

ساهم في هذا النموذج [elisim](https://huggingface.co/elisim) و[kashif](https://huggingface.co/kashif). يمكن العثور على الكود الأصلي [هنا](https://github.com/zhouhaoyi/Informer2020).

## الموارد

قائمة بموارد رسمية من Hugging Face وموارد مجتمعية (مشار إليها بـ 🌎) لمساعدتك على البدء. إذا كنت مهتمًا بإرسال مورد ليُدرج هنا، فلا تتردد في فتح Pull Request وسنقوم بمراجعته! ويُفضّل أن يُظهر المورد شيئًا جديدًا بدلًا من تكرار مورد موجود مسبقًا.

- اطّلع على منشور Informer في مدونة HuggingFace: [التنبؤ الاحتمالي متعدد المتغيرات بالسلاسل الزمنية باستخدام Informer](https://huggingface.co/blog/informer)

## InformerConfig[[transformers.InformerConfig]]

#### transformers.InformerConfig[[transformers.InformerConfig]]

```python
transformers.InformerConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, is_encoder_decoder: bool = True, prediction_length: int | None = None, context_length: int | None = None, distribution_output: str = 'student_t', loss: str = 'nll', input_size: int = 1, lags_sequence: list[int] | None = None, scaling: str | bool | None = 'mean', num_dynamic_real_features: int = 0, num_static_real_features: int = 0, num_static_categorical_features: int = 0, num_time_features: int = 0, cardinality: list[int] | None = None, embedding_dimension: list[int] | None = None, d_model: int = 64, encoder_ffn_dim: int = 32, decoder_ffn_dim: int = 32, encoder_attention_heads: int = 2, decoder_attention_heads: int = 2, encoder_layers: int = 2, decoder_layers: int = 2, activation_function: str = 'gelu', dropout: float | int = 0.05, encoder_layerdrop: float | int = 0.1, decoder_layerdrop: float | int = 0.1, attention_dropout: float | int = 0.1, activation_dropout: float | int = 0.1, num_parallel_samples: int = 100, init_std: float = 0.02, use_cache: bool = True, attention_type: str = 'prob', sampling_factor: int = 5, distil: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/informer/configuration_informer.py#L24)

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

is_encoder_decoder (`bool`، *اختياري*، الافتراضي هو `True`) : ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.

prediction_length (`int`, *اختياري*) : طول التنبؤ للمفكّك. بعبارة أخرى، أفق التنبؤ للنموذج. عادةً ما يُحدَّد هذا القيمة بواسطة مجموعة البيانات، وننصح بإعدادها بشكل مناسب.

context_length (`int`، *اختياري*، القيمة الافتراضية هي `prediction_length`) : طول السياق للمشفّر. إذا كانت `None`، فسيكون طول السياق هو نفسه `prediction_length`.

distribution_output (`string`، *اختياري*، القيمة الافتراضية `"student_t"`) : رأس توزيع الانبعاث للنموذج. يمكن أن يكون "student_t" أو "normal" أو "negative_binomial".

loss (`string`، *اختياري*، القيمة الافتراضية `"nll"`) : دالة الخسارة الخاصة بالنموذج المقابلة لرأس `distribution_output`. في التوزيعات البارامترية، تكون دالة الخسارة هي الاحتمالية السالبة (nll) - وهي حاليًا الخيار المدعوم الوحيد.

input_size (`int`, *اختياري*, القيمة الافتراضية 1) : حجم متغير الهدف، والذي يكون 1 افتراضيًا للأهداف أحادية المتغير. ويكون > 1 في حالة الأهداف متعددة المتغيرات.

lags_sequence (`list[int]`، *اختياري*، القيمة الافتراضية هي `[1, 2, 3, 4, 5, 6, 7]`) : التأخيرات (lags) لسلسلة البيانات الزمنية المدخلة كمتغيرات مصاحبة، وغالبًا ما تُحدَّد بناءً على تكرار البيانات. القيمة الافتراضية هي `[1, 2, 3, 4, 5, 6, 7]`، لكننا نوصي بتغييرها بما يتناسب مع مجموعة البيانات.

scaling (`string` أو `bool`، *اختياري* القيمة الافتراضية `"mean"`) : ما إذا كان سيتم توسيع الأهداف المدخلة عبر مُوسِّع "mean" أو مُوسِّع "std" أو بدون مُوسِّع إذا كانت `None`. إذا كانت `True`، يتم تعيين المُوسِّع إلى "mean".

num_dynamic_real_features (`int`, *اختياري*, القيمة الافتراضية 0) : عدد الميزات الديناميكية ذات القيم الحقيقية.

num_static_real_features (`int`, *اختياري*, القيمة الافتراضية 0) : عدد الميزات الثابتة ذات القيم الحقيقية.

num_static_categorical_features (`int`, *اختياري*, القيمة الافتراضية 0) : عدد الميزات التصنيفية الثابتة.

num_time_features (`int`, *اختياري*, القيمة الافتراضية 0) : عدد ميزات الوقت في السلسلة الزمنية المدخلة.

cardinality (`list[int]`, *اختياري*) : الكاردينالية (عدد القيم المختلفة) لكل من الميزات التصنيفية الثابتة. يجب أن تكون قائمة من الأعداد الصحيحة، ذات نفس طول `num_static_categorical_features`. لا يمكن أن تكون `None` إذا كان `num_static_categorical_features` > 0.

embedding_dimension (`list[int]`، *اختياري*) : بُعد التضمين لكل من الميزات التصنيفية الثابتة. يجب أن يكون قائمة من الأعداد الصحيحة، ذات الطول نفسه لـ`num_static_categorical_features`. لا يمكن أن يكون `None` إذا كان `num_static_categorical_features` > 0.

d_model (`int`, *اختياري*, الافتراضي هو `64`) : حجم طبقات المُرمِّز وطبقة المُجمِّع.

encoder_ffn_dim (`int`, *اختياري*, الافتراضي هو `32`) : أبعاد طبقة "الوسيطة" (المعروفة غالبًا باسم طبقة التقدّم الأمامي) في المُشفِّر.

decoder_ffn_dim (`int`، *اختياري*، الافتراضي هو `32`) : أبعاد طبقة "الوسيطة" (المعروفة غالبًا باسم طبقة التقدّم الأمامي) في المُفكِّك.

encoder_attention_heads (`int`, *اختياري*, الافتراضي `2`) : عدد رؤوس الانتباه لكل طبقة انتباه في مُشفِّر Transformer.

decoder_attention_heads (`int`, *اختياري*, الافتراضي `2`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

encoder_layers (`int`، *اختياري*، القيمة الافتراضية هي `2`) : عدد الطبقات المخفية في مُشفِّر Transformer. سيُستخدم نفس قيمة `num_layers` إذا لم يتم تعيينها.

decoder_layers (`int`، *اختياري*، القيمة الافتراضية `2`) : عدد الطبقات المخفية في مُفكِّك Transformer. سيُستخدم نفس قيمة `num_layers` إذا لم يتم تعيينه.

activation_function (`str`، *اختياري*، القيمة الافتراضية `gelu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.05`) : نسبة جميع طبقات dropout.

encoder_layerdrop (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال LayerDrop للمُشفِّر. راجع [ورقة LayerDrop](see https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل.

decoder_layerdrop (`Union[float, int]`، *اختياري*، الافتراضي هو `0.1`) : احتمال LayerDrop للمفكّك. راجع [ورقة LayerDrop](see https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل.

attention_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

activation_dropout (`float`، *اختياري*، القيمة الافتراضية 0.1) : احتمال الإسقاط (dropout) المستخدم بين الطبقتين في الشبكات الأمامية (feed-forward).

num_parallel_samples (`int`، *اختياري*، القيمة الافتراضية 100) : عدد العينات التي سيتم توليدها بالتوازي لكل خطوة من خطوات الاستدلال.

init_std (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

use_cache (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان `config.is_decoder=True` أو عندما يكون النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.

attention_type (`str`، *اختياري*، القيمة الافتراضية "prob") : الانتباه المستخدم في المُشفِّر. يمكن ضبطه على "prob" (ProbAttention الخاص بـ Informer) أو "full" (انتباه الذات القياسي الخاص بـ transformer العادي).

sampling_factor (`int`, *اختياري*، القيمة الافتراضية 5) : معامل أخذ العينات ProbSparse (لا يؤثر إلا عندما يكون `attention_type`="prob"). يُستخدم للتحكم في طول مدخلات مصفوفة الاستعلام المختزلة (Q_reduce).

distil (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم استخدام التقطير في المُشفِّر.

هذه فئة الإعدادات المخزنة لإعدادات InformerModel. تُستخدم لاستحداث نموذج Informer وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [huggingface/informer-tourism-monthly](https://huggingface.co/huggingface/informer-tourism-monthly)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> from transformers import InformerConfig, InformerModel

>>> # Initializing an Informer configuration with 12 time steps for prediction
>>> configuration = InformerConfig(prediction_length=12)

>>> # Randomly initializing a model (with random weights) from the configuration
>>> model = InformerModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## InformerModel[[transformers.InformerModel]]

#### transformers.InformerModel[[transformers.InformerModel]]

```python
transformers.InformerModel(config: InformerConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/informer/modeling_informer.py#L994)

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

config ([InformerConfig](/docs/transformers/main/ar/model_doc/informer#transformers.InformerConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Informer العاري الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.InformerModel.forward]]

```python
forward(past_values: Tensor, past_time_features: Tensor, past_observed_mask: Tensor, static_categorical_features: typing.Optional[torch.Tensor] = None, static_real_features: typing.Optional[torch.Tensor] = None, future_values: typing.Optional[torch.Tensor] = None, future_time_features: typing.Optional[torch.Tensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: list[torch.Tensor] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/informer/modeling_informer.py#L1132)

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

past_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)` أو `(batch_size, sequence_length, input_size)`) : القيم السابقة لسلسلة الزمن، والتي تعمل كسياق للتنبؤ بالمستقبل. يجب أن يكون حجم التسلسل لهذا الموتر أكبر من `context_length` للنموذج، لأن النموذج سيستخدم الحجم الأكبر لبناء ميزات التأخير، أي قيم إضافية من الماضي تُضاف لتعمل كـ "سياق إضافي". `sequence_length` هنا يساوي `config.context_length` + `max(config.lags_sequence)`، والذي إذا لم يتم تكوين `lags_sequence`، يساوي `config.context_length` + 7 (لأن أكبر فهرس للنظر إلى الوراء في `config.lags_sequence` هو 7 افتراضيًا). الخاصية `_past_length` تعيد الطول الفعلي للماضي. `past_values` هو ما يحصل عليه مشفّر Transformer كمدخلات (مع ميزات إضافية اختيارية، مثل `static_categorical_features`، `static_real_features`، `past_time_features` والتأخيرات). بشكل اختياري، يجب استبدال القيم المفقودة بالصفر وإشارتها عبر `past_observed_mask`. لسلاسل الزمن متعددة المتغيرات، يُطلب بُعد `input_size` > 1، وهو يتوافق مع عدد المتغيرات في سلسلة الزمن لكل خطوة زمنية.

past_time_features (`torch.Tensor` من الشكل `(batch_size, sequence_length, num_features)`) : ميزات الوقت المطلوبة، والتي سيضيفها النموذج داخليًا إلى `past_values`. يمكن أن تكون هذه الميزات أشياء مثل "شهر السنة"، و"اليوم من الشهر"، وما إلى ذلك، مشفّرة كمتجهات (على سبيل المثال كميزات فورييه). كما يمكن أن تكون ما يُسمى بـ"ميزات العمر"، والتي تساعد النموذج في الأساس على معرفة "النقطة التي وصل إليها" السلاسل الزمنية في مسارها الزمني. تتميز ميزات العمر بقيم صغيرة للخطوات الزمنية البعيدة في الماضي، وتزداد بشكل متزايد كلما اقتربنا من الخطوة الزمنية الحالية. ميزات العطلات مثال جيد آخر على ميزات الوقت. تعمل هذه الميزات كـ"ترميز الموضع" للمدخلات. لذا، على عكس نموذج مثل BERT، حيث يتم تعلم ترميزات الموضع من الصفر داخليًا كمعلمات للنموذج، يتطلب Time Series Transformer توفير ميزات وقت إضافية. يتعلم Time Series Transformer ترسيبات إضافية فقط لـ`static_categorical_features`. يمكن دمج متغيرات ديناميكية حقيقية إضافية مع هذا المصفوفة، مع ملاحظة أن هذه الميزات يجب أن تكون معروفة في وقت التنبؤ. `num_features` هنا يساوي `config.`num_time_features` + `config.num_dynamic_real_features`.

past_observed_mask (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)` أو `(batch_size, sequence_length, input_size)`، *اختياري*) : قناع منطقي لتحديد أي قيم `past_values` كانت مرصودة وأيها كانت مفقودة. قيم القناع المختارة ضمن `[0, 1]`: - 1 للقيم التي تكون **مرصودة**، - 0 للقيم التي تكون **مفقودة** (أي قيم NaN التي تم استبدالها بالصفر).

static_categorical_features (`torch.LongTensor` بشكل `(batch_size, number of static categorical features)`، *اختياري*) : ميزات تصنيفية ثابتة اختيارية يتعلم النموذج تضمينًا لها ويضيفه إلى قيم السلسلة الزمنية. الميزات التصنيفية الثابتة هي ميزات لها نفس القيمة في جميع الخطوات الزمنية (ثابتة عبر الزمن). مثال نموذجي على ميزة تصنيفية ثابتة هو معرّف السلسلة الزمنية.

static_real_features (`torch.Tensor` بشكل `(batch_size, number of static real features)`، *اختياري*) : مواصفات حقيقية ثابتة اختيارية يضيفها النموذج إلى قيم السلاسل الزمنية. المواصفات الحقيقية الثابتة هي مواصفات لها نفس القيمة لجميع الخطوات الزمنية (ثابتة عبر الزمن). مثال نموذجي على مواصفة حقيقية ثابتة هو معلومات الترويج.

future_values (`torch.Tensor` من الشكل `(batch_size, prediction_length)` أو `(batch_size, prediction_length, input_size)`، *اختياري*) : القيم المستقبلية لسلسلة الزمن، والتي تعمل كوسوم للنموذج. القيمة `future_values` هي ما يحتاجه النموذج التحويلي (Transformer) أثناء التدريب ليتعلم الإخراج، بناءً على `past_values`. طول التسلسل هنا يساوي `prediction_length`. راجع دفتر الملاحظات التوضيحي ومقاطع الأكواد للتفاصيل. بشكل اختياري، أثناء التدريب يجب استبدال أي قيم مفقودة بالأصفار وإشارتها عبر `future_observed_mask`. بالنسبة لسلاسل الزمن متعددة المتغيرات، يُشترط وجود بُعد `input_size` > 1، وهو يتوافق مع عدد المتغيرات في سلسلة الزمن لكل خطوة زمنية.

future_time_features (`torch.Tensor` من الشكل `(batch_size, prediction_length, num_features)`) : الميزات الزمنية المطلوبة لنافذة التنبؤ، والتي ستضيفها النموذج داخليًا إلى `future_values`. يمكن أن تكون هذه الميزات أشياء مثل "شهر السنة"، "اليوم من الشهر"، وما إلى ذلك، مشفّرة كمتجهات (على سبيل المثال كميزات فورييه). كما يمكن أن تكون ما يُسمى بـ "ميزات العمر"، والتي تساعد النموذج في الأساس على معرفة "المرحلة من العمر" التي تتواجد فيها السلسلة الزمنية. تتميز ميزات العمر بقيم صغيرة للخطوات الزمنية البعيدة في الماضي، وتزداد بشكل أحادي الاتجاه كلما اقتربنا من الخطوة الزمنية الحالية. ميزات العطلات مثال جيد آخر على الميزات الزمنية. تعمل هذه الميزات كـ "ترميز الموضع" للمدخلات. لذا، على عكس نموذج مثل BERT، حيث يتم تعلم ترميزات الموضع من الصفر داخليًا كمعلمات للنموذج، يتطلب Time Series Transformer توفير ميزات زمنية إضافية. يتعلم Time Series Transformer ترسيبات إضافية فقط لـ `static_categorical_features`. يمكن دمج متغيرات ديناميكية حقيقية إضافية مع هذا المصفوفة، مع ملاحظة أن هذه الميزات يجب أن تكون معروفة في وقت التنبؤ. `num_features` هنا يساوي `config.num_time_features` + `config.num_dynamic_real_features`.

decoder_attention_mask (`torch.LongTensor` بأبعاد `(batch_size, target_sequence_length)`، *اختياري*) : قناع لتجنّب تنفيذ الانتباه على فهارس رموز معينة. افتراضيًا، يُستخدم قناع سببي لضمان أن النموذج لا ينظر إلّا إلى المدخلات السابقة من أجل التنبؤ بالمستقبل.

encoder_outputs (`tuple(tuple(torch.Tensor)`, *اختياري*) : يتكوّن Tuple من `last_hidden_state` و`hidden_states` (*اختياري*) و`attentions` (*اختياري*). `last_hidden_state` ذو الشكل `(batch_size, sequence_length, hidden_size)` (*اختياري*) هو تسلسل من الحالات المخفية عند مخرجات الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع في المُفكِّك.

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

**يعيد:** [Seq2SeqTSModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.Seq2SeqTSModelOutput) أو `tuple(torch.Tensor)`

[Seq2SeqTSModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.Seq2SeqTSModelOutput) أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([InformerConfig](/docs/transformers/main/ar/model_doc/informer#transformers.InformerConfig)) والمدخلات.

تُعيد طريقة [InformerModel](/docs/transformers/main/ar/model_doc/informer#transformers.InformerModel) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **last_hidden_state** (`torch.Tensor` بشكل `(batch_size, sequence_length, hidden_size)`) -- سلسلة من حالات الإخفاء عند مخرج الطبقة الأخيرة من فاحش النموذج.

  إذا تم استخدام `past_key_values`، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل `(batch_size, 1, hidden_size)` هي التي تُخرج.
- **past_key_values** (`EncoderDecoderCache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند `config.use_cache=True`) -- هو كائن من نوع [EncoderDecoderCache](/docs/transformers/main/ar/internal/generation_utils#transformers.EncoderDecoderCache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (مفاتيح وقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات المخفية (Hidden-states) للوحدة الترميزية (decoder) عند مخرج كل طبقة، بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **decoder_attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه في المفكّك، بعد softmax الانتباه، المستخدمة لحساب المتوسط المرجّح في رؤوس الانتباه الذاتي.
- **cross_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه في طبقة الانتباه المتقاطع للمفكّك، بعد softmax للانتباه، وتُستخدم لحساب المتوسط المرجّح في رؤوس الانتباه المتقاطع.
- **encoder_last_hidden_state** (`torch.Tensor` بشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- سلسلة من حالات الإخفاء عند مخرجات الطبقة الأخيرة من المُشفِّر في النموذج.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **encoder_attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه للمُشفِّر، بعد softmax للانتباه، المُستخدَمة لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **loc** (`torch.Tensor` بأبعاد `(batch_size,)` أو `(batch_size, input_size)`، *اختياري*) -- إزاحة قيم نافذة السياق لكل سلسلة زمنية، والتي تُستخدم لإمداد النموذج بمدخلات ذات نفس المقدار، ثم تُستخدم للإزاحة مرة أخرى إلى المقدار الأصلي.
- **scale** (`torch.Tensor` بأبعاد `(batch_size,)` أو `(batch_size, input_size)`، *اختياري*) -- قيم التوسيع الخاصة بنافذة السياق لكل سلسلة زمنية، وتُستخدم لإعطاء النموذج مدخلات بنفس المقدار، ثم تُستخدم لإعادة القياس إلى المقدار الأصلي.
- **static_features** (`torch.Tensor` بأبعاد `(batch_size, feature size)`، *اختياري*) -- الميزات الثابتة لكل سلسلة زمنية في الدفعة، والتي تُنسخ إلى المتغيرات المصاحبة عند الاستدلال.

أمثلة:

```python
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import InformerModel

>>> file = hf_hub_download(
...     repo_id="hf-internal-testing/tourism-monthly-batch", filename="train-batch.pt", repo_type="dataset"
... )
>>> batch = torch.load(file)

>>> model = InformerModel.from_pretrained("huggingface/informer-tourism-monthly")

>>> # during training, one provides both past and future values
>>> # as well as possible additional features
>>> outputs = model(
...     past_values=batch["past_values"],
...     past_time_features=batch["past_time_features"],
...     past_observed_mask=batch["past_observed_mask"],
...     static_categorical_features=batch["static_categorical_features"],
...     static_real_features=batch["static_real_features"],
...     future_values=batch["future_values"],
...     future_time_features=batch["future_time_features"],
... )

>>> last_hidden_state = outputs.last_hidden_state
```

## InformerForPrediction[[transformers.InformerForPrediction]]

#### transformers.InformerForPrediction[[transformers.InformerForPrediction]]

```python
transformers.InformerForPrediction(config: InformerConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/informer/modeling_informer.py#L1357)

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

config ([InformerConfig](/docs/transformers/main/ar/model_doc/informer#transformers.InformerConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Informer مع رأس توزيع في الأعلى للتنبؤ بالسلاسل الزمنية.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.InformerForPrediction.forward]]

```python
forward(past_values: Tensor, past_time_features: Tensor, past_observed_mask: Tensor, static_categorical_features: typing.Optional[torch.Tensor] = None, static_real_features: typing.Optional[torch.Tensor] = None, future_values: typing.Optional[torch.Tensor] = None, future_time_features: typing.Optional[torch.Tensor] = None, future_observed_mask: typing.Optional[torch.Tensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: list[torch.Tensor] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/informer/modeling_informer.py#L1392)

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

past_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)` أو `(batch_size, sequence_length, input_size)`) : القيم السابقة لسلسلة الزمن، والتي تعمل كسياق للتنبؤ بالمستقبل. يجب أن يكون حجم التسلسل لهذا الموتر أكبر من `context_length` للنموذج، لأن النموذج سيستخدم الحجم الأكبر لبناء ميزات التأخير، أي قيم إضافية من الماضي تُضاف لتعمل كـ "سياق إضافي". `sequence_length` هنا يساوي `config.context_length` + `max(config.lags_sequence)`، والذي إذا لم يتم تكوين `lags_sequence`، يساوي `config.context_length` + 7 (لأن أكبر فهرس للنظر إلى الوراء في `config.lags_sequence` هو 7 افتراضيًا). الخاصية `_past_length` تعيد الطول الفعلي للماضي. `past_values` هو ما يحصل عليه مشفّر Transformer كمدخلات (مع ميزات إضافية اختيارية، مثل `static_categorical_features`، `static_real_features`، `past_time_features` والتأخيرات). بشكل اختياري، يجب استبدال القيم المفقودة بالصفر وإشارتها عبر `past_observed_mask`. لسلاسل الزمن متعددة المتغيرات، يُطلب بُعد `input_size` > 1، وهو يتوافق مع عدد المتغيرات في سلسلة الزمن لكل خطوة زمنية.

past_time_features (`torch.Tensor` من الشكل `(batch_size, sequence_length, num_features)`) : ميزات الوقت المطلوبة، والتي سيضيفها النموذج داخليًا إلى `past_values`. يمكن أن تكون هذه الميزات أشياء مثل "شهر السنة"، و"اليوم من الشهر"، وما إلى ذلك، مشفّرة كمتجهات (على سبيل المثال كميزات فورييه). كما يمكن أن تكون ما يُسمى بـ"ميزات العمر"، والتي تساعد النموذج في الأساس على معرفة "النقطة التي وصل إليها" السلاسل الزمنية في مسارها الزمني. تتميز ميزات العمر بقيم صغيرة للخطوات الزمنية البعيدة في الماضي، وتزداد بشكل متزايد كلما اقتربنا من الخطوة الزمنية الحالية. ميزات العطلات مثال جيد آخر على ميزات الوقت. تعمل هذه الميزات كـ"ترميز الموضع" للمدخلات. لذا، على عكس نموذج مثل BERT، حيث يتم تعلم ترميزات الموضع من الصفر داخليًا كمعلمات للنموذج، يتطلب Time Series Transformer توفير ميزات وقت إضافية. يتعلم Time Series Transformer ترسيبات إضافية فقط لـ`static_categorical_features`. يمكن دمج متغيرات ديناميكية حقيقية إضافية مع هذا المصفوفة، مع ملاحظة أن هذه الميزات يجب أن تكون معروفة في وقت التنبؤ. `num_features` هنا يساوي `config.`num_time_features` + `config.num_dynamic_real_features`.

past_observed_mask (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)` أو `(batch_size, sequence_length, input_size)`، *اختياري*) : قناع منطقي لتحديد أي قيم `past_values` كانت مرصودة وأيها كانت مفقودة. قيم القناع المختارة ضمن `[0, 1]`: - 1 للقيم التي تكون **مرصودة**، - 0 للقيم التي تكون **مفقودة** (أي قيم NaN التي تم استبدالها بالصفر).

static_categorical_features (`torch.LongTensor` بشكل `(batch_size, number of static categorical features)`، *اختياري*) : ميزات تصنيفية ثابتة اختيارية يتعلم النموذج تضمينًا لها ويضيفه إلى قيم السلسلة الزمنية. الميزات التصنيفية الثابتة هي ميزات لها نفس القيمة في جميع الخطوات الزمنية (ثابتة عبر الزمن). مثال نموذجي على ميزة تصنيفية ثابتة هو معرّف السلسلة الزمنية.

static_real_features (`torch.Tensor` بشكل `(batch_size, number of static real features)`، *اختياري*) : مواصفات حقيقية ثابتة اختيارية يضيفها النموذج إلى قيم السلاسل الزمنية. المواصفات الحقيقية الثابتة هي مواصفات لها نفس القيمة لجميع الخطوات الزمنية (ثابتة عبر الزمن). مثال نموذجي على مواصفة حقيقية ثابتة هو معلومات الترويج.

future_values (`torch.Tensor` من الشكل `(batch_size, prediction_length)` أو `(batch_size, prediction_length, input_size)`، *اختياري*) : القيم المستقبلية لسلسلة الزمن، والتي تعمل كوسوم للنموذج. القيمة `future_values` هي ما يحتاجه النموذج التحويلي (Transformer) أثناء التدريب ليتعلم الإخراج، بناءً على `past_values`. طول التسلسل هنا يساوي `prediction_length`. راجع دفتر الملاحظات التوضيحي ومقاطع الأكواد للتفاصيل. بشكل اختياري، أثناء التدريب يجب استبدال أي قيم مفقودة بالأصفار وإشارتها عبر `future_observed_mask`. بالنسبة لسلاسل الزمن متعددة المتغيرات، يُشترط وجود بُعد `input_size` > 1، وهو يتوافق مع عدد المتغيرات في سلسلة الزمن لكل خطوة زمنية.

future_time_features (`torch.Tensor` من الشكل `(batch_size, prediction_length, num_features)`) : الميزات الزمنية المطلوبة لنافذة التنبؤ، والتي ستضيفها النموذج داخليًا إلى `future_values`. يمكن أن تكون هذه الميزات أشياء مثل "شهر السنة"، "اليوم من الشهر"، وما إلى ذلك، مشفّرة كمتجهات (على سبيل المثال كميزات فورييه). كما يمكن أن تكون ما يُسمى بـ "ميزات العمر"، والتي تساعد النموذج في الأساس على معرفة "المرحلة من العمر" التي تتواجد فيها السلسلة الزمنية. تتميز ميزات العمر بقيم صغيرة للخطوات الزمنية البعيدة في الماضي، وتزداد بشكل أحادي الاتجاه كلما اقتربنا من الخطوة الزمنية الحالية. ميزات العطلات مثال جيد آخر على الميزات الزمنية. تعمل هذه الميزات كـ "ترميز الموضع" للمدخلات. لذا، على عكس نموذج مثل BERT، حيث يتم تعلم ترميزات الموضع من الصفر داخليًا كمعلمات للنموذج، يتطلب Time Series Transformer توفير ميزات زمنية إضافية. يتعلم Time Series Transformer ترسيبات إضافية فقط لـ `static_categorical_features`. يمكن دمج متغيرات ديناميكية حقيقية إضافية مع هذا المصفوفة، مع ملاحظة أن هذه الميزات يجب أن تكون معروفة في وقت التنبؤ. `num_features` هنا يساوي `config.num_time_features` + `config.num_dynamic_real_features`.

future_observed_mask (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)` أو `(batch_size, sequence_length, input_size)`، *اختياري*) : قناع منطقي يُبيّن أيّ قيم `future_values` كانت مُلاحَظة وأيّها كانت مفقودة. قيم القناع المختارة من `[0, 1]`: - 1 للقيم **المُلاحَظة**، - 0 للقيم **المفقودة** (أي قيم NaN التي استُبدلت بالأصفار). يُستخدم هذا القناع لاستبعاد القيم المفقودة في حساب الدالة النهائية.

decoder_attention_mask (`torch.LongTensor` بأبعاد `(batch_size, target_sequence_length)`، *اختياري*) : قناع لتجنّب تنفيذ الانتباه على فهارس رموز معينة. افتراضيًا، يُستخدم قناع سببي لضمان أن النموذج لا ينظر إلّا إلى المدخلات السابقة من أجل التنبؤ بالمستقبل.

encoder_outputs (`tuple(tuple(torch.Tensor)`, *اختياري*) : يتكوّن Tuple من `last_hidden_state` و`hidden_states` (*اختياري*) و`attentions` (*اختياري*). `last_hidden_state` ذو الشكل `(batch_size, sequence_length, hidden_size)` (*اختياري*) هو تسلسل من الحالات المخفية عند مخرجات الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع في المُفكِّك.

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

**يعيد:** [Seq2SeqTSModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.Seq2SeqTSModelOutput) أو `tuple(torch.Tensor)`

[Seq2SeqTSModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.Seq2SeqTSModelOutput) أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([InformerConfig](/docs/transformers/main/ar/model_doc/informer#transformers.InformerConfig)) والمدخلات.

تُعيد طريقة [InformerForPrediction](/docs/transformers/main/ar/model_doc/informer#transformers.InformerForPrediction) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **last_hidden_state** (`torch.Tensor` بشكل `(batch_size, sequence_length, hidden_size)`) -- سلسلة من حالات الإخفاء عند مخرج الطبقة الأخيرة من فاحش النموذج.

  إذا تم استخدام `past_key_values`، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل `(batch_size, 1, hidden_size)` هي التي تُخرج.
- **past_key_values** (`EncoderDecoderCache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند `config.use_cache=True`) -- هو كائن من نوع [EncoderDecoderCache](/docs/transformers/main/ar/internal/generation_utils#transformers.EncoderDecoderCache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (مفاتيح وقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات المخفية (Hidden-states) للوحدة الترميزية (decoder) عند مخرج كل طبقة، بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **decoder_attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه في المفكّك، بعد softmax الانتباه، المستخدمة لحساب المتوسط المرجّح في رؤوس الانتباه الذاتي.
- **cross_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه في طبقة الانتباه المتقاطع للمفكّك، بعد softmax للانتباه، وتُستخدم لحساب المتوسط المرجّح في رؤوس الانتباه المتقاطع.
- **encoder_last_hidden_state** (`torch.Tensor` بشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- سلسلة من حالات الإخفاء عند مخرجات الطبقة الأخيرة من المُشفِّر في النموذج.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **encoder_attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه للمُشفِّر، بعد softmax للانتباه، المُستخدَمة لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **loc** (`torch.Tensor` بأبعاد `(batch_size,)` أو `(batch_size, input_size)`، *اختياري*) -- إزاحة قيم نافذة السياق لكل سلسلة زمنية، والتي تُستخدم لإمداد النموذج بمدخلات ذات نفس المقدار، ثم تُستخدم للإزاحة مرة أخرى إلى المقدار الأصلي.
- **scale** (`torch.Tensor` بأبعاد `(batch_size,)` أو `(batch_size, input_size)`، *اختياري*) -- قيم التوسيع الخاصة بنافذة السياق لكل سلسلة زمنية، وتُستخدم لإعطاء النموذج مدخلات بنفس المقدار، ثم تُستخدم لإعادة القياس إلى المقدار الأصلي.
- **static_features** (`torch.Tensor` بأبعاد `(batch_size, feature size)`، *اختياري*) -- الميزات الثابتة لكل سلسلة زمنية في الدفعة، والتي تُنسخ إلى المتغيرات المصاحبة عند الاستدلال.

أمثلة:

```python
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import InformerForPrediction

>>> file = hf_hub_download(
...     repo_id="hf-internal-testing/tourism-monthly-batch", filename="train-batch.pt", repo_type="dataset"
... )
>>> batch = torch.load(file)

>>> model = InformerForPrediction.from_pretrained(
...     "huggingface/informer-tourism-monthly"
... )

>>> # during training, one provides both past and future values
>>> # as well as possible additional features
>>> outputs = model(
...     past_values=batch["past_values"],
...     past_time_features=batch["past_time_features"],
...     past_observed_mask=batch["past_observed_mask"],
...     static_categorical_features=batch["static_categorical_features"],
...     static_real_features=batch["static_real_features"],
...     future_values=batch["future_values"],
...     future_time_features=batch["future_time_features"],
... )

>>> loss = outputs.loss
>>> loss.backward()

>>> # during inference, one only provides past values
>>> # as well as possible additional features
>>> # the model autoregressively generates future values
>>> outputs = model.generate(
...     past_values=batch["past_values"],
...     past_time_features=batch["past_time_features"],
...     past_observed_mask=batch["past_observed_mask"],
...     static_categorical_features=batch["static_categorical_features"],
...     static_real_features=batch["static_real_features"],
...     future_time_features=batch["future_time_features"],
... )

>>> mean_prediction = outputs.sequences.mean(dim=1)
```

