# PatchTST

## نظرة عامة

قُدِّم نموذج PatchTST في [A Time Series is Worth 64 Words: Long-term Forecasting with Transformers](https://huggingface.co/papers/2211.14730) من قِبل Yuqi Nie وNam H. Nguyen وPhanwadee Sinthong وJayant Kalagnanam.

على مستوى عالٍ، يقوم النموذج بتحويل السلاسل الزمنية إلى متجهات على شكل رقعات بحجم محدد، ثم يرمّز التسلسل الناتج من المتجهات عبر نموذج Transformer، الذي بدوره يُخرج توقعات بطول التنبؤ المطلوب عبر رأس مناسب. يُوضّح النموذج في الشكل التالي:

![model](https://github.com/namctin/transformers/assets/8100/150af169-29de-419a-8d98-eb78251c21fa)

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

*نقترح تصميمًا فعّالًا لنماذج قائمة على Transformer للتنبؤ بسلاسل زمنية متعددة المتغيرات وتعلم التمثيل الذاتي الإشراف. يعتمد هذا التصميم على مكوّنين رئيسيين: (أ) تقسيم السلاسل الزمنية إلى رقع على مستوى السلاسل الفرعية، والتي تُستخدم كرموز إدخال لـ Transformer؛ (ب) استقلالية القنوات، حيث تحتوي كل قناة على سلسلة زمنية أحادية المتغير واحدة، وتشارك نفس التضمين وأوزان Transformer عبر جميع السلاسل. يأتي تصميم الرقع بفائدة ثلاثية: إذ يُحافظ على المعلومات الدلالية المحلية في التضمين؛ وتُقلَّل حسابات خرائط الانتباه واستهلاك الذاكرة بشكل تربيعي عند استخدام نافذة نظر خلفي متساوية؛ كما يمكن للنموذج الانتباه إلى تاريخ أطول. يمكن لنموذج Transformer للزمن المستمر المستقل للقنوات القائم على الرقع (PatchTST) تحسين دقة التنبؤ طويل المدى بشكل ملحوظ مقارنةً بنماذج Transformer القائمة على أحدث التقنيات. كما نطبق نموذجنا على مهام ما قبل التدريب الذاتي الإشراف، ونحقق أداءً ممتازًا في الضبط الدقيق يتفوق على التدريب المُشرَف على مجموعات البيانات الكبيرة. كما يؤدي نقل التمثيل المُقنَّع المُدرَّب مسبقًا من مجموعة بيانات إلى أخرى إلى تحقيق دقة تنبؤ بأحدث التقنيات.*

تمت مساهمة هذا النموذج من قِبل [namctin](https://huggingface.co/namctin) و[gsinthong](https://huggingface.co/gsinthong) و[diepi](https://huggingface.co/diepi) و[vijaye12](https://huggingface.co/vijaye12) و[wmgifford](https://huggingface.co/wmgifford) و[kashif](https://huggingface.co/kashif). يمكن العثور على الكود الأصلي [هنا](https://github.com/yuqinie98/PatchTST).

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

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

## الموارد

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

## PatchTSTConfig[[transformers.PatchTSTConfig]]

#### transformers.PatchTSTConfig[[transformers.PatchTSTConfig]]

```python
transformers.PatchTSTConfig(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, num_input_channels: int = 1, context_length: int = 32, distribution_output: str = 'student_t', loss: str | None = 'mse', patch_length: int = 1, patch_stride: int = 1, num_hidden_layers: int = 3, d_model: int = 128, num_attention_heads: int = 4, share_embedding: bool = True, channel_attention: bool = False, ffn_dim: int = 512, norm_type: str = 'batchnorm', norm_eps: float = 1e-05, attention_dropout: float | int = 0.0, positional_dropout: float | int = 0.0, path_dropout: float | int = 0.0, ff_dropout: float | int = 0.0, bias: bool = True, activation_function: str = 'gelu', pre_norm: bool = True, positional_encoding_type: str = 'sincos', use_cls_token: bool = False, init_std: float = 0.02, share_projection: bool = True, scaling: str | bool | None = 'std', do_mask_input: bool | None = None, mask_type: str = 'random', random_mask_ratio: float = 0.5, num_forecast_mask_patches: list[int] | tuple[int, ...] | int | None = (2,), channel_consistent_masking: bool | None = False, unmasked_channel_indices: list[int] | None = None, mask_value: int = 0, pooling_type: str | None = 'mean', head_dropout: float | int = 0.0, prediction_length: int = 24, num_targets: int = 1, output_range: list | None = None, num_parallel_samples: int = 100)
```

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

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

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

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

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

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

patch_length (`int`، *اختياري*، القيمة الافتراضية 1) : تحديد طول الباتش (patch) في عملية التقطيع (patchification).

patch_stride (`int`، *اختياري*، القيمة الافتراضية 1) : تحديد الخطوة (stride) لعملية تقطيع البقع (patchification).

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

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

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

share_embedding (`bool`، *اختياري*، القيمة الافتراضية `True`) : مشاركة تضمين الإدخال عبر جميع القنوات.

channel_attention (`bool`، *اختياري*، الافتراضي `False`) : تفعيل كتلة انتباه القناة في Transformer للسماح للقنوات بالانتباه إلى بعضها البعض.

ffn_dim (`int`، *اختياري*، القيمة الافتراضية 512) : بُعد طبقة "الوسيطة" (التي تُسمّى غالبًا طبقة التغذية الأمامية) في مُشفِّر Transformer.

norm_type (`str` ، *اختياري*، القيمة الافتراضية `"batchnorm"`) : عملية التطبيع في كل طبقة من طبقات Transformer. يمكن أن تكون `"batchnorm"` أو `"layernorm"`.

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

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

positional_dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : احتمال الإسقاط (dropout) في طبقة التضمين الموضعي.

path_dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : مسار الإسقاط (dropout) في الكتلة المتبقية (residual block).

ff_dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : احتمال الإسقاط (dropout) المستخدم بين الطبقتين في شبكات التغذية الأمامية.

bias (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إضافة انحياز في الشبكات الأمامية.

activation_function (`str`، *اختياري*، القيمة الافتراضية `"gelu"`) : دالة التنشيط غير الخطية (نص) في Transformer. يتم دعم `"gelu"` و`"relu"`.

pre_norm (`bool`، *اختياري*، القيمة الافتراضية `True`) : يُطبَّق التطبيع قبل الانتباه الذاتي إذا كانت pre_norm مضبوطة على `True`. وإلا، يُطبَّق التطبيع بعد كتلة البقايا.

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

use_cls_token (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان رمز cls مستخدمًا.

init_std (`float`، *اختياري*، القيمة الافتراضية 0.02) : الانحراف المعياري لتوزيع تهيئة الأوزات الطبيعي المقطوع.

share_projection (`bool`، *اختياري*، القيمة الافتراضية `True`) : مشاركة طبقة الإسقاط عبر قنوات مختلفة في رأس التنبؤ.

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

do_mask_input (`bool`، *اختياري*) : تطبيق الأقنعة (masking) أثناء التدريب المسبق.

mask_type (`str`، *اختياري*، القيمة الافتراضية `"random"`) : نوع الإخفاء. حاليًا، يُدعم `"random"` و`"forecast"` فقط.

random_mask_ratio (`float`، *اختياري*، القيمة الافتراضية 0.5) : نسبة الإخفاء (Masking ratio) المطبقة لإخفاء بيانات الإدخال أثناء التدريب المسبق العشوائي.

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

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

unmasked_channel_indices (`list`، *اختياري*) : فهارس القنوات التي لا تُخفى أثناء التدريب المسبق. القيم في القائمة هي أرقام بين 1 و`num_input_channels`

mask_value (`int`، *اختياري*، القيمة الافتراضية 0) : سيتم ملء القيم في البقع المقنّعة بواسطة `mask_value`.

pooling_type (`str`، *اختياري*، القيمة الافتراضية `"mean"`) : تجميع التضمين. يتم دعم `"mean"` و`"max"` و`None`.

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

prediction_length (`int`، *اختياري*، القيمة الافتراضية 24) : أفق التنبؤ الذي سيُخرجه النموذج.

num_targets (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الأهداف لمهام الانحدار والتصنيف. في حالة التصنيف، هو عدد الفئات.

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

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

هذه فئة الإعدادات (configuration class) لتخزين إعدادات نموذج PatchTSTModel. تُستخدم لاستحداث نموذج Patchtst وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ [ibm-granite/granite-timeseries-patchtst](https://huggingface.co/ibm-granite/granite-timeseries-patchtst)

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

```python
>>> from transformers import PatchTSTConfig, PatchTSTModel

>>> # Initializing an PatchTST configuration with 12 time steps for prediction
>>> configuration = PatchTSTConfig(prediction_length=12)

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

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

## PatchTSTModel[[transformers.PatchTSTModel]]

#### transformers.PatchTSTModel[[transformers.PatchTSTModel]]

```python
transformers.PatchTSTModel(config: PatchTSTConfig)
```

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

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

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

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

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

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

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

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

past_values (`torch.Tensor` من الشكل `(bs, sequence_length, num_input_channels)`، *مطلوب*) : تسلسل الإدخال إلى النموذج

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

future_values (`torch.BoolTensor` من الشكل `(batch_size, prediction_length, num_input_channels)`، *اختياري*) : قيم الأهداف المستقبلية المرتبطة بـ `past_values`

output_hidden_states (`bool`، *اختياري*) : ما إذا كان يجب إرجاع حالات الإخفاء (hidden states) لجميع الطبقات أم لا

output_attentions (`bool`، *اختياري*) : ما إذا كان يجب إخراج انتباه المخرجات لجميع الطبقات أم لا

return_dict (`bool`, *اختياري*) : ما إذا كان يجب إرجاع `ModelOutput` بدلاً من tuple عادي.

**يعيد:**

`PatchTSTModelOutput` أو مجموعة مرتبة من `torch.Tensor` (إذا كان `return_dict`=False أو `config.return_dict`=False)

أمثلة:

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

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

>>> model = PatchTSTModel.from_pretrained("namctin/patchtst_etth1_pretrain")

>>> # during training, one provides both past and future values
>>> outputs = model(
...     past_values=batch["past_values"],
...     future_values=batch["future_values"],
... )

>>> last_hidden_state = outputs.last_hidden_state
```

## PatchTSTForPrediction[[transformers.PatchTSTForPrediction]]

#### transformers.PatchTSTForPrediction[[transformers.PatchTSTForPrediction]]

```python
transformers.PatchTSTForPrediction(config: PatchTSTConfig)
```

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

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

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

نموذج PatchTST للتنبؤ.

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

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

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

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

past_values (`torch.Tensor` من الشكل `(bs, sequence_length, num_input_channels)`، *مطلوب*) : تسلسل الإدخال إلى النموذج

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

future_values (`torch.Tensor` من الشكل `(bs, forecast_len, num_input_channels)`، *اختياري*) : قيم الأهداف المستقبلية المرتبطة بـ `past_values`

output_hidden_states (`bool`، *اختياري*) : ما إذا كان يجب إرجاع حالات الإخفاء (hidden states) لجميع الطبقات أم لا

output_attentions (`bool`، *اختياري*) : ما إذا كان يجب إخراج انتباه المخرجات لجميع الطبقات أم لا

return_dict (`bool`, *اختياري*) : ما إذا كان يجب إرجاع `ModelOutput` بدلاً من tuple عادي.

**يعيد:**

`PatchTSTForPredictionOutput` أو مجموعة من `torch.Tensor` (إذا كان `return_dict`=False أو `config.return_dict`=False)

أمثلة:

```python
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import PatchTSTConfig, PatchTSTForPrediction

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

>>> # Prediction task with 7 input channels and prediction length is 96
>>> model = PatchTSTForPrediction.from_pretrained("namctin/patchtst_etth1_forecast")

>>> # during training, one provides both past and future values
>>> outputs = model(
...     past_values=batch["past_values"],
...     future_values=batch["future_values"],
... )

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

>>> # during inference, one only provides past values, the model outputs future values
>>> outputs = model(past_values=batch["past_values"])
>>> prediction_outputs = outputs.prediction_outputs
```

## PatchTSTForClassification[[transformers.PatchTSTForClassification]]

#### transformers.PatchTSTForClassification[[transformers.PatchTSTForClassification]]

```python
transformers.PatchTSTForClassification(config: PatchTSTConfig)
```

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

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

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

نموذج PatchTST للتصنيف.

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

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

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

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

past_values (`torch.Tensor` من الشكل `(bs, sequence_length, num_input_channels)`، *مطلوب*) : تسلسل الإدخال إلى النموذج

target_values (`torch.Tensor`، *اختياري*) : تسميات مرتبطة بـ `past_values`

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

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

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

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

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

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

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

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

- **loss** (`*optional*`، يُعاد عند تقديم `labels`، `torch.Tensor` من الشكل `(1,)`) -- إجمالي الخسارة كمجموع خسارة نمذجة اللغة المقنّعة وخسارة التنبؤ بالتسلسل التالي (التصنيف).
- **prediction_logits** (`torch.Tensor` من الشكل `(batch_size, num_targets)`) -- درجات التنبؤ لرأس نمذجة PatchTST (الدرجات قبل SoftMax).
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `torch.Tensor` (واحدة لكل من مخرجات الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لكل من مخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

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

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import PatchTSTConfig, PatchTSTForClassification

>>> # classification task with two input channel2 and 3 classes
>>> config = PatchTSTConfig(
...     num_input_channels=2,
...     num_targets=3,
...     context_length=512,
...     patch_length=12,
...     stride=12,
...     use_cls_token=True,
... )
>>> model = PatchTSTForClassification(config=config)

>>> # during inference, one only provides past values
>>> past_values = torch.randn(20, 512, 2)
>>> outputs = model(past_values=past_values)
>>> labels = outputs.prediction_logits
```

## PatchTSTForPretraining[[transformers.PatchTSTForPretraining]]

#### transformers.PatchTSTForPretraining[[transformers.PatchTSTForPretraining]]

```python
transformers.PatchTSTForPretraining(config: PatchTSTConfig)
```

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

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

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

نموذج PatchTST للتدريب المسبق.

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

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

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

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

past_values (`torch.Tensor` من الشكل `(bs, sequence_length, num_input_channels)`، *مطلوب*) : تسلسل الإدخال إلى النموذج

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

output_hidden_states (`bool`، *اختياري*) : ما إذا كان يجب إرجاع حالات الإخفاء (hidden states) لجميع الطبقات أم لا

output_attentions (`bool`، *اختياري*) : ما إذا كان يجب إخراج انتباه المخرجات لجميع الطبقات أم لا

return_dict (`bool`, *اختياري*) : ما إذا كان يجب إرجاع `ModelOutput` بدلاً من tuple عادي.

**يعيد:**

`PatchTSTForPretrainingOutput` أو مجموعة من `torch.Tensor` (إذا كان `return_dict`=False أو `config.return_dict`=False)

أمثلة:

```python
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import PatchTSTConfig, PatchTSTForPretraining

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

>>> # Config for random mask pretraining
>>> config = PatchTSTConfig(
...     num_input_channels=7,
...     context_length=512,
...     patch_length=12,
...     stride=12,
...     mask_type='random',
...     random_mask_ratio=0.4,
...     use_cls_token=True,
... )
>>> # Config for forecast mask pretraining
>>> config = PatchTSTConfig(
...     num_input_channels=7,
...     context_length=512,
...     patch_length=12,
...     stride=12,
...     mask_type='forecast',
...     num_forecast_mask_patches=5,
...     use_cls_token=True,
... )
>>> model = PatchTSTForPretraining(config)

>>> # during training, one provides both past and future values
>>> outputs = model(past_values=batch["past_values"])

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

## PatchTSTForRegression[[transformers.PatchTSTForRegression]]

#### transformers.PatchTSTForRegression[[transformers.PatchTSTForRegression]]

```python
transformers.PatchTSTForRegression(config: PatchTSTConfig)
```

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

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

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

نموذج PatchTST للانحدار.

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

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

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

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

past_values (`torch.Tensor` من الشكل `(bs, sequence_length, num_input_channels)`، *مطلوب*) : تسلسل الإدخال إلى النموذج

target_values (`torch.Tensor` من الشكل `(bs, num_input_channels)`) : القيم المستهدفة المرتبطة بـ `past_values`

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

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

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

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

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

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

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

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

- **loss** (`*optional*`, returned when `labels` is provided, `torch.Tensor` of shape `(1,)`) -- MSE loss.
- **regression_outputs** (`torch.Tensor` من الشكل `(batch_size, num_targets)`) -- مخرجات الانحدار لرؤوس نمذجة السلاسل الزمنية.
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `torch.Tensor` (واحدة لكل من مخرجات الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لكل من مخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

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

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import PatchTSTConfig, PatchTSTForRegression

>>> # Regression task with 6 input channels and regress 2 targets
>>> model = PatchTSTForRegression.from_pretrained("namctin/patchtst_etth1_regression")

>>> # during inference, one only provides past values, the model outputs future values
>>> past_values = torch.randn(20, 512, 6)
>>> outputs = model(past_values=past_values)
>>> regression_outputs = outputs.regression_outputs
```

