# PatchTSMixer

## نظرة عامة

قُدِّم نموذج PatchTSMixer في [TSMixer: Lightweight MLP-Mixer Model for Multivariate Time Series Forecasting](https://huggingface.co/papers/2306.09364) من قِبل Vijay Ekambaram وArindam Jati وNam Nguyen وPhanwadee Sinthong وJayant Kalagnanam.

PatchTSMixer هو نهج خفيف لنمذجة السلاسل الزمنية يعتمد على بنية MLP-Mixer. في هذا التنفيذ من HuggingFace، نوفر قدرات PatchTSMixer لتسهيل الخلط الخفيف عبر البقع والقنوات والميزات المخفية بفعالية، من أجل نمذجة السلاسل الزمنية متعددة المتغيرات. كما يدعم آليات انتباه متنوعة، بدءًا من الانتباه البسيط المُدار وصولًا إلى كتل الانتباه الذاتي الأكثر تعقيدًا والتي يمكن تخصيصها وفقًا لذلك. يمكن تدريب النموذج مسبقًا ثم استخدامه لمهام لاحقة متنوعة مثل التنبؤ والتصنيف والانحدار.

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

*يُعد TSMixer بنية عصبية خفيفة الوزن تتكون حصريًا من وحدات محددات الاستجابة المتعددة الطبقات (MLP)، وقد صُممت للتنبؤ متعدد المتغيرات وتعلم التمثيل على سلاسل زمنية مقسمة إلى مقاطع. يستمد نموذجنا إلهامه من نجاح نماذج MLP-Mixer في مجال رؤية الحاسوب. نُظهر التحديات المرتبطة بتكييف Vision MLP-Mixer لسلاسل الزمن، ونُقدّم مكونات مُتحققًا منها تجريبيًا لتعزيز الدقة. ويشمل ذلك تصميمًا جديدًا يربط رؤوس المصالحة الفورية (online reconciliation heads) بالهيكل الأساسي لـ MLP-Mixer، لنمذجة خصائص سلاسل الزمن بشكل صريح، مثل التسلسل الهرمي والتداخلات بين القنوات. كما نقترح نهجًا هجينًا لنمذجة القنوات للتعامل بفعالية مع تفاعلات القنوات الضجيجية والتعميم عبر مجموعات بيانات متنوعة، وهو تحدٍّ شائع في طرق خلط المقاطع والقنوات الموجودة حاليًا. بالإضافة إلى ذلك، نُقدّم آلية انتباه بسيطة مبنية على البوابات (gated attention) داخل الهيكل الأساسي لإعطاء الأولوية للميزات المهمة. من خلال دمج هذه المكونات الخفيفة الوزن، نُحسّن بشكل كبير قدرة التعلم في هياكل MLP البسيطة، متفوقين على نماذج Transformer المعقدة باستخدام حاسوبي ضئيل. علاوة على ذلك، يتيح التصميم المعياري لـ TSMixer التوافق مع كل من طرق التعلم المُشرف والتعلم الذاتي المُشرف المقنّع (masked self-supervised learning)، مما يجعله لبنة واعدة لبناء نماذج أساسية (Foundation Models) لسلاسل الزمن. يتفوق TSMixer على أحدث نماذج MLP و Transformer في التنبؤ بفارق كبير يتراوح بين 8% و60%. كما يتفوق على أحدث المعايير القوية لنماذج Patch-Transformer (بفارق 1-2%) مع تقليل كبير في الذاكرة وزمن التشغيل (2-3 أضعاف).*

تمت مساهمة هذا النموذج من قِبل [ajati](https://huggingface.co/ajati)، [vijaye12](https://huggingface.co/vijaye12)، [gsinthong](https://huggingface.co/gsinthong)، [namctin](https://huggingface.co/namctin)، [wmgifford](https://huggingface.co/wmgifford)، [kashif](https://huggingface.co/kashif).

## مثال على الاستخدام

يُظهر مقتطف الشيفرة أدناه كيفية تهيئة نموذج PatchTSMixer عشوائياً. يتوافق النموذج مع [Trainer API](../trainer).

```python

from transformers import PatchTSMixerConfig, PatchTSMixerForPrediction
from transformers import Trainer, TrainingArguments,

config = PatchTSMixerConfig(context_length = 512, prediction_length = 96)
model = PatchTSMixerForPrediction(config)
trainer = Trainer(model=model, args=training_args, 
            train_dataset=train_dataset,
            eval_dataset=valid_dataset)
trainer.train()
results = trainer.evaluate(test_dataset)
```

## نصائح للاستخدام

يمكن أيضًا استخدام النموذج لتصنيف سلاسل الزمنية والانحدار على سلاسل الزمنية. راجع فئتي [PatchTSMixerForTimeSeriesClassification](/docs/transformers/main/ar/model_doc/patchtsmixer#transformers.PatchTSMixerForTimeSeriesClassification) و[PatchTSMixerForRegression](/docs/transformers/main/ar/model_doc/patchtsmixer#transformers.PatchTSMixerForRegression) المقابلة لكل منهما.

## الموارد

- يمكن العثور على منشور مدونة يشرح PatchTSMixer بالتفصيل [هنا](https://huggingface.co/blog/patchtsmixer). كما يمكن فتح المدونة في Google Colab.

## PatchTSMixerConfig[[transformers.PatchTSMixerConfig]]

#### transformers.PatchTSMixerConfig[[transformers.PatchTSMixerConfig]]

```python
transformers.PatchTSMixerConfig(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, is_encoder_decoder: bool = False, 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, context_length: int = 32, patch_length: int = 8, num_input_channels: int = 1, patch_stride: int = 8, num_parallel_samples: int = 100, d_model: int = 8, expansion_factor: int = 2, num_layers: int = 3, dropout: float | int = 0.2, mode: str = 'common_channel', gated_attn: bool = True, norm_mlp: str = 'LayerNorm', self_attn: bool = False, self_attn_heads: int = 1, use_positional_encoding: bool = False, positional_encoding_type: str = 'sincos', scaling: str | bool | None = 'std', loss: str = 'mse', init_std: float = 0.02, norm_eps: float = 1e-05, mask_type: str = 'random', random_mask_ratio: float = 0.5, num_forecast_mask_patches: list[int] | tuple[int, ...] | int | None = (2,), mask_value: int = 0, masked_loss: bool = True, channel_consistent_masking: bool = True, unmasked_channel_indices: list[int] | None = None, head_dropout: float | int = 0.2, distribution_output: str = 'student_t', prediction_length: int = 16, prediction_channel_indices: list | None = None, num_targets: int = 3, output_range: list | None = None, head_aggregation: str | None = 'max_pool')
```

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

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

context_length (`int`، *اختياري*، القيمة الافتراضية 32) : طول السياق/السجل لسلسلة الإدخال.

patch_length (`int`، *اختياري*، القيمة الافتراضية 8) : طول الباتش (patch) لسلسلة الإدخال.

num_input_channels (`int`، *اختياري*، القيمة الافتراضية `1`) : عدد قنوات الإدخال.

patch_stride (`int`، *اختياري*، القيمة الافتراضية 8) : يحدد التداخل بين رقعتين متتاليتين. اضبطه على patch_length (أو قيمة أكبر) إذا أردنا رقعات غير متداخلة.

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

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

expansion_factor (`int`، *اختياري*، القيمة الافتراضية 2) : معامل التوسيع المستخدم داخل MLP. النطاق الموصى به هو 2-5. القيمة الأكبر تشير إلى نموذج أكثر تعقيدًا.

num_layers (`int`، *اختياري*، القيمة الافتراضية `3`) : عدد الطبقات المخفية في مُفكِّك Transformer.

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

mode (`str`، *اختياري*، القيمة الافتراضية `"common_channel"`) : وضع المخلّط. يحدد كيفية معالجة القنوات. القيم المسموح بها: "common_channel"، "mix_channel". في وضع "common_channel"، نتبع النمذجة المستقلة عن القنوات دون خلط صريح للقنوات. يحدث خلط القنوات بشكل ضمني عبر الأوزان المشتركة بين القنوات. (النهج المفضل أولاً) في وضع "mix_channel"، نتبع الخلط الصريح للقنوات بالإضافة إلى مخلّط البقع والميزات. (النهج المفضل عندما تكون الارتباطات بين القنوات مهمة جداً للنمذجة)

gated_attn (`bool`، *اختياري*، الافتراضي `True`) : تفعيل الانتباه البوَّابي (Gated Attention).

norm_mlp (`str`، *اختياري*، القيمة الافتراضية `"LayerNorm"`) : طبقة التطبيع (BatchNorm أو LayerNorm).

self_attn (`bool`، *اختياري*، القيمة الافتراضية `False`) : تفعيل الانتباه الذاتي الصغير عبر البقع. يمكن تفعيل هذا الخيار عندما لا تكون مخرجات Vanilla PatchTSMixer مع الانتباه المُدارِجة مُرضية. يؤدي تفعيل هذا الخيار إلى انتباه صريح بين الأزواج ونمذجة عبر البقع.

self_attn_heads (`int`، *اختياري*، القيمة الافتراضية 1) : عدد رؤوس الانتباه الذاتي. يعمل فقط عند ضبط `self_attn` على `True`.

use_positional_encoding (`bool`, *اختياري*, الافتراضي `False`) : تفعيل استخدام التضمين الموضعي لطبقات الانتباه الذاتي الصغيرة. يعمل فقط عند ضبط `self_attn` على `True`.

positional_encoding_type (`str`، *اختياري*، القيمة الافتراضية `"sincos"`) : الترميزات الموضعية. يتم دعم الخيارات `"random"` و`"sincos"`. يعمل فقط عند ضبط `use_positional_encoding` على `True`

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

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

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

norm_eps (`float`، *اختياري*، القيمة الافتراضية 1e-05) : قيمة تُضاف إلى المقام لضمان الاستقرار العددي لعملية التطبيع.

mask_type (`str`، *اختياري*، القيمة الافتراضية `"random"`) : نوع الإخفاء (Masking) المستخدم في وضع التدريب المسبق بالإخفاء (Masked Pretraining). القيم المسموح بها هي "random" و"forecast". في الإخفاء العشوائي، تُخفى النقاط بشكل عشوائي. أما في الإخفاء التنبؤي، فتُخفى النقاط باتجاه النهاية.

random_mask_ratio (`float`، *اختياري*، القيمة الافتراضية 0.5) : نسبة الإخفاء المستخدمة عندما يكون `mask_type` هو `random`. تشير القيمة الأعلى إلى إخفاء أكبر.

num_forecast_mask_patches (`int` أو `list`، *اختياري*، القيمة الافتراضية `[2]`) : عدد البقع التي سيتم إخفاؤها في نهاية كل عينة من الدفعة. إذا كان عددًا صحيحًا، فستحتوي جميع العينات في الدفعة على نفس عدد البقع المخفية. إذا كان قائمة، فسيتم إخفاء العينات في الدفعة عشوائيًا بالأعداد المحددة في القائمة. يُستخدم هذا الحجة فقط للتدريب المسبق للتنبؤ.

mask_value (`float`، *اختياري*، القيمة الافتراضية `0.0`) : قيمة القناع المستخدمة.

masked_loss (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب حساب خسارة ما قبل التدريب فقط على الأجزاء المقنّعة، أم على المخرجات بأكملها.

channel_consistent_masking (`bool`، *اختياري*، القيمة الافتراضية `True`) : عند ضبطه على true، ستكون عملية الإخفاء (masking) متطابقة عبر جميع القنوات في سلسلة زمنية. وإلا، فإن مواضع الإخفاء ستتفاوت بين القنوات.

unmasked_channel_indices (`list`، *اختياري*) : القنوات التي لا يتم إخفاؤها أثناء التدريب المسبق.

head_dropout (`float`، *اختياري*، القيمة الافتراضية 0.2) : احتمال الإسقاط (dropout) في رأس `PatchTSMixer`.

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

prediction_length (`int`، *اختياري*، القيمة الافتراضية 16) : عدد خطوات الزمن للتنبؤ في مهمة التنبؤ. يُعرف أيضًا بأفق التنبؤ.

prediction_channel_indices (`list`، *اختياري*) : قائمة بمؤشرات القنوات للتنبؤ بها. إذا كانت القيمة None، فسيتم التنبؤ بجميع القنوات. يُتوقع أن تحتوي بيانات الهدف على جميع القنوات، ونقوم بتصفية القنوات بشكل صريح في كل من التنبؤ والهدف قبل حساب الخسارة.

num_targets (`int`، *اختياري*، القيمة الافتراضية 3) : عدد الأهداف (أبعاد المتغير المُعادِ) لمهمة الانحدار.

output_range (`list`، *اختياري*) : نطاق الإخراج المقيد لمهمة الانحدار. القيمة الافتراضية هي None.

head_aggregation (`str`، *اختياري*، القيمة الافتراضية `"max_pool"`) : وضع التجميع الذي يجب تفعيله لمهمة التصنيف أو الانحدار. القيم المسموح بها هي `None`، "use_last"، "max_pool"، "avg_pool".

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

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

مثال:

```python
>>> from transformers import PatchTSMixerConfig, PatchTSMixerModel

>>> # Initializing a default PatchTSMixer configuration
>>> configuration = PatchTSMixerConfig()

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

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

## PatchTSMixerModel[[transformers.PatchTSMixerModel]]

#### transformers.PatchTSMixerModel[[transformers.PatchTSMixerModel]]

```python
transformers.PatchTSMixerModel(config: PatchTSMixerConfig, mask_input: bool = False)
```

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

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

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

mask_input (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم إخفاء المدخلات باستخدام وحدة `PatchTSMixerMasking`.

نموذج PatchTSMixer للتنبؤ بالمتسلسلات الزمنية.

يرث هذا النموذج من [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.PatchTSMixerModel.forward]]

```python
forward(past_values: Tensor, observed_mask: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, **kwargs)
```

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

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

past_values (`torch.Tensor` من الشكل `(batch_size, seq_length, num_input_channels)`) : قيم السياق لسلسلة الزمن. في مهمة التدريب المسبق، يشير هذا إلى سلسلة الزمن المدخلة للتنبؤ بالجزء المقنّع. في مهمة التنبؤ، يشير هذا إلى قيم سلسلة الزمن التاريخية/السابقة. وبالمثل، في مهام التصنيف أو الانحدار، يشير إلى قيم السياق المناسبة لسلسلة الزمن. بالنسبة لسلاسل الزمن أحادية المتغير، يجب أن تكون بُعد `num_input_channels` مساوياً لـ 1. أما بالنسبة لسلاسل الزمن متعددة المتغيرات، فهو أكبر من 1.

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

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

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

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

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

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

- **last_hidden_state** (`torch.Tensor`  من الشكل `(batch_size, num_channels, num_patches, d_model)`) -- حالة المخفية عند مخرج الطبقة الأخيرة من النموذج.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*) -- حالات الإخفاء (Hidden-states) للنموذج عند مخرج كل طبقة.
- **patch_input** (`torch.Tensor` من الشكل `(batch_size, num_channels, num_patches, patch_length)`) -- بيانات الإدخال المقطّعة إلى النموذج.
- **قناع** (`torch.Tensor` من الشكل `(batch_size, num_channels, num_patches)`، *اختياري*) -- مصفوفة منطقية (Bool Tensor) تشير إلى True في البقع المقنّعة وFalse في غير ذلك.
- **loc** (`torch.Tensor` من الشكل `(batch_size, 1, num_channels)`، *اختياري*) -- يعطي متوسط نافذة السياق لكل قناة. يُستخدم لإزالة التطبيع خارج النموذج إذا كان revin مفعلاً.
- **scale** (`torch.Tensor` من الشكل `(batch_size, 1, num_channels)`، *اختياري*) -- يعطي الانحراف المعياري لنافذة السياق لكل قناة. يُستخدم لتطبيع revin خارج النموذج، إذا كان revin مفعلاً.

## PatchTSMixerForPrediction[[transformers.PatchTSMixerForPrediction]]

#### transformers.PatchTSMixerForPrediction[[transformers.PatchTSMixerForPrediction]]

```python
transformers.PatchTSMixerForPrediction(config: PatchTSMixerConfig)
```

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

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

config (`PatchTSMixerConfig`) : التهيئة.

**يعيد:**

`None`.

`PatchTSMixer` لتطبيقات التنبؤ.

#### forward[[transformers.PatchTSMixerForPrediction.forward]]

```python
forward(past_values: Tensor, observed_mask: typing.Optional[torch.Tensor] = None, future_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

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

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

past_values (`torch.Tensor` من الشكل `(batch_size, seq_length, num_input_channels)`) : قيم السياق لسلسلة الزمن. في مهمة التدريب المسبق، يشير هذا إلى سلسلة الزمن المدخلة للتنبؤ بالجزء المقنّع. في مهمة التنبؤ، يشير هذا إلى قيم سلسلة الزمن التاريخية/السابقة. وبالمثل، في مهام التصنيف أو الانحدار، يشير إلى قيم السياق المناسبة لسلسلة الزمن. بالنسبة لسلاسل الزمن أحادية المتغير، يجب أن تكون بُعد `num_input_channels` مساوياً لـ 1. أما بالنسبة لسلاسل الزمن متعددة المتغيرات، فهو أكبر من 1.

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

future_values (`torch.Tensor` من الشكل `(batch_size, target_len, num_input_channels)` للتنبؤ، أو `(batch_size, num_targets)` للانحدار، أو `(batch_size,)` للتصنيف، *اختياري*): قيم الهدف لسلسلة الزمن، التي تعمل كوسوم للنموذج. `future_values` هو ما يحتاجه Transformer أثناء التدريب ليتعلم الإخراج، بناءً على `past_values`. لاحظ أن هذا ليس مطلوبًا لمهمة ما قبل التدريب. لمهمة التنبؤ، يكون الشكل `(batch_size, target_len, num_input_channels)`. حتى لو أردنا التنبؤ بقنوات محددة فقط من خلال تعيين الفهارس في معامل `prediction_channel_indices`، قم بتمرير بيانات الهدف مع جميع القنوات، حيث يتم تطبيق تصفية القنوات لكل من التنبؤ والهدف يدويًا قبل حساب الخسارة.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_loss (`bool`،  *اختياري*) : ما إذا كان يجب إرجاع الخسارة في استدعاء `forward`.

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

A `PatchTSMixerForPredictionOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([PatchTSMixerConfig](/docs/transformers/main/ar/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) and inputs.

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

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

- **loss** (`*optional*`, returned when `y` is provided, `torch.Tensor` of shape `()`) -- Total loss.
- **prediction_outputs** (`torch.Tensor` من الشكل `(batch_size, prediction_length, num_input_channels)`) -- مخرجات التنبؤ من رأس التنبؤ.
- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_input_channels, num_patches, d_model)`) -- تمثيلات العمود الفقري قبل المرور عبر الرأس.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*) -- حالات الإخفاء (Hidden-states) للنموذج عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **loc** (`torch.Tensor`، *اختياري* من الشكل `(batch_size, 1, num_input_channels)`) -- متوسط الإدخال
- **scale** (`torch.Tensor`، *اختياري* من الشكل `(batch_size, 1, num_input_channels)`) -- الانحراف المعياري للمدخل

## PatchTSMixerForTimeSeriesClassification[[transformers.PatchTSMixerForTimeSeriesClassification]]

#### transformers.PatchTSMixerForTimeSeriesClassification[[transformers.PatchTSMixerForTimeSeriesClassification]]

```python
transformers.PatchTSMixerForTimeSeriesClassification(config: PatchTSMixerConfig)
```

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

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

config (`PatchTSMixerConfig`) : التهيئة.

**يعيد:**

`None`.

`PatchTSMixer` لتطبيق التصنيف.

#### forward[[transformers.PatchTSMixerForTimeSeriesClassification.forward]]

```python
forward(past_values: Tensor, target_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

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

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

past_values (`torch.Tensor` من الشكل `(batch_size, seq_length, num_input_channels)`) : قيم السياق لسلسلة الزمن. في مهمة التدريب المسبق، يشير هذا إلى سلسلة الزمن المدخلة للتنبؤ بالجزء المقنّع. في مهمة التنبؤ، يشير هذا إلى قيم سلسلة الزمن التاريخية/السابقة. وبالمثل، في مهام التصنيف أو الانحدار، يشير إلى قيم السياق المناسبة لسلسلة الزمن. بالنسبة لسلاسل الزمن أحادية المتغير، يجب أن تكون بُعد `num_input_channels` مساوياً لـ 1. أما بالنسبة لسلاسل الزمن متعددة المتغيرات، فهو أكبر من 1.

target_values (`torch.Tensor` من الشكل `(batch_size, target_len, num_input_channels)` للتنبؤ، أو `(batch_size, num_targets)` للانحدار، أو `(batch_size,)` للتصنيف، *اختياري*): قيم الهدف لسلسلة البيانات الزمنية، والتي تعمل كوسوم للنموذج. القيمة `target_values` هي ما يحتاجه النموذج التحويلي (Transformer) أثناء التدريب ليتعلم إخراجها، بناءً على `past_values`. لاحظ أن هذا ليس مطلوباً لمهمة ما قبل التدريب. لمهمة التنبؤ، يكون الشكل `(batch_size, target_len, num_input_channels)`. حتى لو أردنا التنبؤ بقنوات محددة فقط من خلال تعيين الفهارس في معامل `prediction_channel_indices`، قم بتمرير بيانات الهدف مع جميع القنوات، حيث يتم تطبيق تصفية القنوات لكل من التنبؤ والهدف يدوياً قبل حساب الخسارة. لمهمة التصنيف، يكون الشكل `(batch_size,)`. لمهمة الانحدار، يكون الشكل `(batch_size, num_targets)`.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_loss (`bool`، *اختياري*) : ما إذا كان يجب إرجاع الخسارة في استدعاء `forward`.

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

A `PatchTSMixerForTimeSeriesClassificationOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([PatchTSMixerConfig](/docs/transformers/main/ar/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) and inputs.

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

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

- **loss** (`*optional*`، يُعاد عند تقديم `y`، `torch.Tensor` من الشكل `()`) -- إجمالي الخسارة.
- **prediction_outputs** (`torch.Tensor` من الشكل `(batch_size, num_labels)`) -- مخرجات التنبؤ من رأس التصنيف.
- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_input_channels, num_patches, d_model)`) -- تمثيلات العمود الفقري قبل المرور عبر الرأس.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*) -- حالات الإخفاء (Hidden-states) للنموذج عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

## PatchTSMixerForPretraining[[transformers.PatchTSMixerForPretraining]]

#### transformers.PatchTSMixerForPretraining[[transformers.PatchTSMixerForPretraining]]

```python
transformers.PatchTSMixerForPretraining(config: PatchTSMixerConfig)
```

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

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

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

`PatchTSMixer` للتدريب المسبق على الأقنعة.

يرث هذا النموذج من [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.PatchTSMixerForPretraining.forward]]

```python
forward(past_values: Tensor, observed_mask: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

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

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

past_values (`torch.Tensor` من الشكل `(batch_size, seq_length, num_input_channels)`) : قيم السياق لسلسلة الزمن. في مهمة التدريب المسبق، يشير هذا إلى سلسلة الزمن المدخلة للتنبؤ بالجزء المقنّع. في مهمة التنبؤ، يشير هذا إلى قيم سلسلة الزمن التاريخية/السابقة. وبالمثل، في مهام التصنيف أو الانحدار، يشير إلى قيم السياق المناسبة لسلسلة الزمن. بالنسبة لسلاسل الزمن أحادية المتغير، يجب أن تكون بُعد `num_input_channels` مساوياً لـ 1. أما بالنسبة لسلاسل الزمن متعددة المتغيرات، فهو أكبر من 1.

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

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_loss (`bool`،  *اختياري*) : ما إذا كان يجب إرجاع الخسارة في استدعاء `forward`.

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

A `PatchTSMixerForPreTrainingOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([PatchTSMixerConfig](/docs/transformers/main/ar/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) and inputs.

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

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

- **loss** (`*optional*`, يُعاد عند تقديم `y`, `torch.Tensor` من الشكل `()`) -- إجمالي الخسارة
- **prediction_outputs** (`torch.Tensor` من الشكل `(batch_size, num_input_channels, num_patches, patch_length)`) -- مخرجات التنبؤ من رأس التدريب المسبق.
- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_input_channels, num_patches, d_model)`) -- تمثيلات العمود الفقري قبل المرور عبر الرأس.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*) -- حالات الإخفاء (Hidden-states) للنموذج عند مخرج كل طبقة.

## PatchTSMixerForRegression[[transformers.PatchTSMixerForRegression]]

#### transformers.PatchTSMixerForRegression[[transformers.PatchTSMixerForRegression]]

```python
transformers.PatchTSMixerForRegression(config: PatchTSMixerConfig)
```

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

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

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

`PatchTSMixer` لتطبيق الانحدار.

يرث هذا النموذج من [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.PatchTSMixerForRegression.forward]]

```python
forward(past_values: Tensor, target_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

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

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

past_values (`torch.Tensor` من الشكل `(batch_size, seq_length, num_input_channels)`) : قيم السياق لسلسلة الزمن. في مهمة التدريب المسبق، يشير هذا إلى سلسلة الزمن المدخلة للتنبؤ بالجزء المقنّع. في مهمة التنبؤ، يشير هذا إلى قيم سلسلة الزمن التاريخية/السابقة. وبالمثل، في مهام التصنيف أو الانحدار، يشير إلى قيم السياق المناسبة لسلسلة الزمن. بالنسبة لسلاسل الزمن أحادية المتغير، يجب أن تكون بُعد `num_input_channels` مساوياً لـ 1. أما بالنسبة لسلاسل الزمن متعددة المتغيرات، فهو أكبر من 1.

target_values (`torch.Tensor` من الشكل `(batch_size, target_len, num_input_channels)` للتنبؤ، أو `(batch_size, num_targets)` للانحدار، أو `(batch_size,)` للتصنيف، *اختياري*): قيم الهدف لسلسلة البيانات الزمنية، والتي تعمل كوسوم للنموذج. القيمة `target_values` هي ما يحتاجه النموذج التحويلي (Transformer) أثناء التدريب ليتعلم إخراجها، بناءً على `past_values`. لاحظ أن هذا ليس مطلوباً لمهمة ما قبل التدريب. لمهمة التنبؤ، يكون الشكل `(batch_size, target_len, num_input_channels)`. حتى لو أردنا التنبؤ بقنوات محددة فقط من خلال تعيين الفهارس في معامل `prediction_channel_indices`، قم بتمرير بيانات الهدف مع جميع القنوات، حيث يتم تطبيق تصفية القنوات لكل من التنبؤ والهدف يدوياً قبل حساب الخسارة. لمهمة التصنيف، يكون الشكل `(batch_size,)`. لمهمة الانحدار، يكون الشكل `(batch_size, num_targets)`.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_loss (`bool`، *اختياري*) : ما إذا كان يجب إرجاع الخسارة في استدعاء `forward`.

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

A `PatchTSMixerForRegressionOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([PatchTSMixerConfig](/docs/transformers/main/ar/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) and inputs.

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

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

- **loss** (`*optional*`, يُعاد عند تقديم `y`, `torch.Tensor` من الشكل `()`) -- إجمالي الخسارة.
- **regression_outputs** (`torch.Tensor` من الشكل `(batch_size, num_targets)`) -- مخرجات التنبؤ من رأس الانحدار.
- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_input_channels, num_patches, d_model)`) -- تمثيلات العمود الفقري قبل المرور عبر الرأس.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*) -- حالات الإخفاء (Hidden-states) للنموذج عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

