# Autoformer

## نظرة عامة

قُدِّم نموذج Autoformer في [Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting](https://huggingface.co/papers/2106.13008) بواسطة Haixu Wu وJiehui Xu وJianmin Wang وMingsheng Long.

تُوسّع هذه النموذج بنية Transformer كبنية تحليلية عميقة، مما يتيح تحليل المكونات الاتجاهية والموسمية تدريجياً أثناء عملية التنبؤ.

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

*تمديد فترة التنبؤ هو مطلب حاسم للتطبيقات الواقعية، مثل الإنذار المبكر للأحوال الجوية القاسية والتخطيط طويل الأمد لاستهلاك الطاقة. تدرس هذه الورقة مشكلة التنبؤ طويل الأمد لسلاسل البيانات الزمنية. تعتمد نماذج Transformer السابقة على آليات انتباه ذاتي متنوعة لاكتشاف الاعتماديات طويلة المدى. ومع ذلك، تمنع الأنماط الزمنية المعقدة للمستقبل البعيد النموذج من إيجاد اعتماديات موثوقة. كما أن نماذج Transformer مضطرة لاعتماد إصدارات متناثرة من الانتباه الذاتي النقطي من أجل كفاءة السلاسل الطويلة، مما يؤدي إلى عنق زجاجة في استغلال المعلومات. متجاوزين نماذج Transformer، صممنا Autoformer كبنية تفكيك جديدة تتضمن آلية ارتباط ذاتي (Auto-Correlation). كسرنا العرف السائد في المعالجة المسبقة المتمثلة في تفكيك السلاسل، وأعدنا ابتكارها كتداخل داخلي أساسي في النماذج العميقة. يمنح هذا التصميم Autoformer قدرات تفكيك تدريجي لسلاسل البيانات الزمنية المعقدة. وعلاوة على ذلك، مستوحين من نظرية العمليات العشوائية، صممنا آلية Auto-Correlation بناءً على دورية السلاسل، حيث تقوم باكتشاف الاعتماديات وتجميع التمثيلات على مستوى السلاسل الفرعية. تتفوق آلية Auto-Correlation على الانتباه الذاتي من حيث الكفاءة والدقة على حد سواء. في التنبؤ طويل الأمد، يحقق Autoformer دقة متقدمة، مع تحسن نسبي بنسبة 38% على ستة معايير مرجعية، تغطي خمسة تطبيقات عملية: الطاقة، والمرور، والاقتصاد، والطقس، والأمراض.*

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

## الموارد

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

- اطّلع على مدونة Autoformer في مدونة HuggingFace: [نعم، نماذج Transformers فعّالة للتنبؤ بالسلاسل الزمنية (+ Autoformer)](https://huggingface.co/blog/autoformer)

## AutoformerConfig[[transformers.AutoformerConfig]]

#### transformers.AutoformerConfig[[transformers.AutoformerConfig]]

```python
transformers.AutoformerConfig(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] | tuple[int, ...] = (1, 2, 3, 4, 5, 6, 7), scaling: bool | str = True, num_time_features: int = 0, num_dynamic_real_features: int = 0, num_static_categorical_features: int = 0, num_static_real_features: int = 0, cardinality: list[int] | None = None, embedding_dimension: list[int] | None = None, d_model: int = 64, encoder_attention_heads: int = 2, decoder_attention_heads: int = 2, encoder_layers: int = 2, decoder_layers: int = 2, encoder_ffn_dim: int = 32, decoder_ffn_dim: int = 32, activation_function: str = 'gelu', dropout: float | int = 0.1, 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, label_length: int = 10, moving_average: int = 25, autocorrelation_factor: int = 3)
```

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

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

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

prediction_length (`int`, *اختياري*) : طول التنبؤ للمفكّك. بعبارة أخرى، أفق التنبؤ للنموذج.

context_length (`int`، *اختياري*، الافتراضي هو `prediction_length`) : طول السياق للمُشفِّر. إذا لم يُضبط، سيكون طول السياق هو نفسه `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]`) : تأخيرات سلسلة الزمنية المدخلة كمتغيرات مصاحبة، وغالبًا ما تُحدد حسب التكرار. الافتراضي هو `[1, 2, 3, 4, 5, 6, 7]`.

scaling (`bool`، *اختياري* القيمة الافتراضية `True`) : ما إذا كان سيتم توسيع الأهداف المدخلة.

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

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

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

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

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

embedding_dimension (`list[int]`, *اختياري*) : أبعاد التضمينات والحالات المخفية.

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

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` إذا لم يتم تعيينه.

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

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

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

dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية هي `0.1`) : النسبة لجميع طبقات 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 (`Union[float, int]`، *اختياري*، الافتراضي هو `0.1`) : نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل.

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

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

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

label_length (`int`, *اختياري*, القيمة الافتراضية 10) : طول رمز البداية في فكّ ترميز Autoformer، ويُستخدم للتنبؤ متعدد الخطوات المباشر (أي التوليد غير التكراري الذاتي).

moving_average (`int`، *اختياري*، الافتراضي 25) : حجم نافذة المتوسط المتحرك. عمليًا، هو حجم النواة في AvgPool1d من طبقة Decomposition Layer.

autocorrelation_factor (`int`, *اختياري*, القيمة الافتراضية 3) : معامل "Attention" (أي آلية AutoCorrelation) الذي يُستخدم لإيجاد تأخيرات أعلى k من الارتباط الذاتي. يُوصى في الورقة البحثية بإعداده إلى قيمة بين 1 و5.

هذه هي فئة التهيئة التي تُخزّن إعدادات AutoformerModel. تُستخدم لإنشاء نموذج Autoformer وفقًا للحجج المحددة، مع تحديد بنية النموذج. إنشاء إعدادات بقيم افتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ [huggingface/autoformer-tourism-monthly](https://huggingface.co/huggingface/autoformer-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 AutoformerConfig, AutoformerModel

>>> # Initializing a default Autoformer configuration
>>> configuration = AutoformerConfig()

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

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

## AutoformerModel[[transformers.AutoformerModel]]

#### transformers.AutoformerModel[[transformers.AutoformerModel]]

```python
transformers.AutoformerModel(config: AutoformerConfig)
```

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

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

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

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

يرث هذا النموذج من [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.AutoformerModel.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/autoformer/modeling_autoformer.py#L1181)

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

past_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) : القيم السابقة لسلسلة الزمنية، التي تعمل كسياق للتنبؤ بالمستقبل. قد تحتوي هذه القيم على تأخيرات، أي قيم إضافية من الماضي تُضاف لتعمل كـ«سياق إضافي». الـ `past_values` هو ما يستقبله مُشفِّر Transformer كمدخل (مع ميزات إضافية اختيارية، مثل `static_categorical_features`، `static_real_features`، `past_time_features`). طول التسلسل هنا يساوي `context_length` + `max(config.lags_sequence)`. يجب استبدال القيم المفقودة بأصفار.

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

past_observed_mask (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع منطقي لتحديد أي قيم `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)`) : القيم المستقبلية لسلسلة الزمن، والتي تعمل كوسوم للنموذج. الـ `future_values` هي ما يجب على Transformer أن يتعلم إخراجها، بناءً على `past_values`. راجع دفتر الملاحظات التوضيحي ومقتطفات الشيفرة للتفاصيل. يجب استبدال القيم المفقودة بأصفار.

future_time_features (`torch.Tensor` من الشكل `(batch_size, prediction_length, num_features)`، *اختياري*) : ميزات زمنية اختيارية ستضيفها النموذج داخليًا إلى `future_values`. يمكن أن تكون هذه الميزات أشياء مثل "شهر السنة" أو "يوم الشهر" وما إلى ذلك، مشفّرةً كمتجهات (على سبيل المثال كميزات فورييه). كما يمكن أن تكون ما يُسمى بـ"ميزات العمر"، التي تساعد النموذج في الأساس على معرفة "في أي نقطة من عمر" السلسلة الزمنية. تتميز ميزات العمر بقيم صغيرة للخطوات الزمنية البعيدة في الماضي وتزداد بشكل متزايد كلما اقتربنا من الخطوة الزمنية الحالية. تعمل هذه الميزات كـ"ترميز المواقع" للمدخلات. لذا، على عكس نموذج مثل BERT حيث تُتعلَّم ترميزات المواقع من الصفر داخليًا كمعاملات للنموذج، يتطلب Time Series Transformer تقديم ميزات إضافية. يتعلم Autoformer فقط تضمينات إضافية لـ`static_categorical_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`).

**يعيد:** `AutoformerModelOutput` أو `tuple(torch.Tensor)`

كائن `AutoformerModelOutput` أو مجموعة مرتبة من `torch.Tensor` (في حال تمرير `return_dict=False` أو عند `config.return_dict=False`) تتألف من عناصر مختلفة اعتمادًا على الإعداد ([AutoformerConfig](/docs/transformers/main/ar/model_doc/autoformer#transformers.AutoformerConfig)) والمدخلات.

تتجاوز طريقة [AutoformerModel](/docs/transformers/main/ar/model_doc/autoformer#transformers.AutoformerModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

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

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

  إذا تم استخدام `past_key_values`، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل `(batch_size, 1, hidden_size)` هي التي تُخرج.
- **trend** (`torch.Tensor` بأبعاد `(batch_size, sequence_length, hidden_size)`) -- مصفوفة الاتجاه لكل سلسلة زمنية.
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `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`) لتسريع فك الترميز التسلسلي.
- **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) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
- **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)`، *اختياري*): الميزات الثابتة لكل سلسلة زمنية في الدفعة، والتي تُنسخ إلى المتغيرات المشتركة في وقت الاستدلال.
- **static_features** (`torch.Tensor` بأبعاد `(batch_size, feature size)`، *اختياري*) -- الميزات الثابتة لكل سلسلة زمنية في الدفعة، والتي تُنسخ إلى المتغيرات المصاحبة عند الاستدلال.

أمثلة:

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

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

>>> model = AutoformerModel.from_pretrained("huggingface/autoformer-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"],
...     future_values=batch["future_values"],
...     future_time_features=batch["future_time_features"],
... )

>>> last_hidden_state = outputs.last_hidden_state
```

## AutoformerForPrediction[[transformers.AutoformerForPrediction]]

#### transformers.AutoformerForPrediction[[transformers.AutoformerForPrediction]]

```python
transformers.AutoformerForPrediction(config: AutoformerConfig)
```

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

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

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

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

يرث هذا النموذج من [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.AutoformerForPrediction.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/autoformer/modeling_autoformer.py#L1413)

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

past_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) : القيم السابقة لسلسلة الزمنية، التي تعمل كسياق للتنبؤ بالمستقبل. قد تحتوي هذه القيم على تأخيرات، أي قيم إضافية من الماضي تُضاف لتعمل كـ«سياق إضافي». الـ `past_values` هو ما يستقبله مُشفِّر Transformer كمدخل (مع ميزات إضافية اختيارية، مثل `static_categorical_features`، `static_real_features`، `past_time_features`). طول التسلسل هنا يساوي `context_length` + `max(config.lags_sequence)`. يجب استبدال القيم المفقودة بأصفار.

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

past_observed_mask (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع منطقي لتحديد أي قيم `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)`) : القيم المستقبلية لسلسلة الزمن، والتي تعمل كوسوم للنموذج. الـ `future_values` هي ما يجب على Transformer أن يتعلم إخراجها، بناءً على `past_values`. راجع دفتر الملاحظات التوضيحي ومقتطفات الشيفرة للتفاصيل. يجب استبدال القيم المفقودة بأصفار.

future_time_features (`torch.Tensor` من الشكل `(batch_size, prediction_length, num_features)`، *اختياري*) : ميزات زمنية اختيارية ستضيفها النموذج داخليًا إلى `future_values`. يمكن أن تكون هذه الميزات أشياء مثل "شهر السنة" أو "يوم الشهر" وما إلى ذلك، مشفّرةً كمتجهات (على سبيل المثال كميزات فورييه). كما يمكن أن تكون ما يُسمى بـ"ميزات العمر"، التي تساعد النموذج في الأساس على معرفة "في أي نقطة من عمر" السلسلة الزمنية. تتميز ميزات العمر بقيم صغيرة للخطوات الزمنية البعيدة في الماضي وتزداد بشكل متزايد كلما اقتربنا من الخطوة الزمنية الحالية. تعمل هذه الميزات كـ"ترميز المواقع" للمدخلات. لذا، على عكس نموذج مثل BERT حيث تُتعلَّم ترميزات المواقع من الصفر داخليًا كمعاملات للنموذج، يتطلب Time Series Transformer تقديم ميزات إضافية. يتعلم Autoformer فقط تضمينات إضافية لـ`static_categorical_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`).

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

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

تتجاوز طريقة [AutoformerForPrediction](/docs/transformers/main/ar/model_doc/autoformer#transformers.AutoformerForPrediction) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

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

- **loss** (`torch.Tensor` بأبعاد `(1,)`، *اختياري*، يُعاد عند تقديم `future_values`) -- خسارة توزيعية.
- **params** (`torch.Tensor` بأبعاد `(batch_size, num_samples, num_params)`) -- معاملات التوزيع المختار.
- **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) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
- **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 AutoformerForPrediction

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

>>> model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-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"],
...     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"],
...     future_time_features=batch["future_time_features"],
... )

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

يمكن لـ AutoformerForPrediction أيضًا استخدام static_real_features. لذلك، اضبط num_static_real_features في AutoformerConfig بناءً على عدد هذه الميزات في مجموعة البيانات (في حالة مجموعة بيانات tourism_monthly، هي

يساوي 1)، قم بتهيئة النموذج واستدعاء … كما هو موضح أدناه:

```
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import AutoformerConfig, AutoformerForPrediction

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

>>> # check number of static real features
>>> num_static_real_features = batch["static_real_features"].shape[-1]

>>> # load configuration of pretrained model and override num_static_real_features
>>> configuration = AutoformerConfig.from_pretrained(
...     "huggingface/autoformer-tourism-monthly",
...     num_static_real_features=num_static_real_features,
... )
>>> # we also need to update feature_size as it is not recalculated
>>> configuration.feature_size += num_static_real_features

>>> model = AutoformerForPrediction(configuration)

>>> 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"],
... )
```

