Transformers documentation
PatchTST
نُشر هذا النموذج في أوراق HF في 27 نوفمبر 2022، وأُضيف إلى مكتبة Hugging Face Transformers في 13 نوفمبر 2023.
PatchTST
نظرة عامة
قُدِّم نموذج PatchTST في A Time Series is Worth 64 Words: Long-term Forecasting with Transformers من قِبل Yuqi Nie وNam H. Nguyen وPhanwadee Sinthong وJayant Kalagnanam.
على مستوى عالٍ، يقوم النموذج بتحويل السلاسل الزمنية إلى متجهات على شكل رقعات بحجم محدد، ثم يرمّز التسلسل الناتج من المتجهات عبر نموذج Transformer، الذي بدوره يُخرج توقعات بطول التنبؤ المطلوب عبر رأس مناسب. يُوضّح النموذج في الشكل التالي:
المستخلص من الورقة البحثية هو كالتالي:
نقترح تصميمًا فعّالًا لنماذج قائمة على Transformer للتنبؤ بسلاسل زمنية متعددة المتغيرات وتعلم التمثيل الذاتي الإشراف. يعتمد هذا التصميم على مكوّنين رئيسيين: (أ) تقسيم السلاسل الزمنية إلى رقع على مستوى السلاسل الفرعية، والتي تُستخدم كرموز إدخال لـ Transformer؛ (ب) استقلالية القنوات، حيث تحتوي كل قناة على سلسلة زمنية أحادية المتغير واحدة، وتشارك نفس التضمين وأوزان Transformer عبر جميع السلاسل. يأتي تصميم الرقع بفائدة ثلاثية: إذ يُحافظ على المعلومات الدلالية المحلية في التضمين؛ وتُقلَّل حسابات خرائط الانتباه واستهلاك الذاكرة بشكل تربيعي عند استخدام نافذة نظر خلفي متساوية؛ كما يمكن للنموذج الانتباه إلى تاريخ أطول. يمكن لنموذج Transformer للزمن المستمر المستقل للقنوات القائم على الرقع (PatchTST) تحسين دقة التنبؤ طويل المدى بشكل ملحوظ مقارنةً بنماذج Transformer القائمة على أحدث التقنيات. كما نطبق نموذجنا على مهام ما قبل التدريب الذاتي الإشراف، ونحقق أداءً ممتازًا في الضبط الدقيق يتفوق على التدريب المُشرَف على مجموعات البيانات الكبيرة. كما يؤدي نقل التمثيل المُقنَّع المُدرَّب مسبقًا من مجموعة بيانات إلى أخرى إلى تحقيق دقة تنبؤ بأحدث التقنيات.
تمت مساهمة هذا النموذج من قِبل namctin وgsinthong وdiepi وvijaye12 وwmgifford وkashif. يمكن العثور على الكود الأصلي هنا.
نصائح للاستخدام
يمكن أيضًا استخدام النموذج لتصنيف السلاسل الزمنية والانحدار على السلاسل الزمنية. راجع فئتي PatchTSTForClassification وPatchTSTForRegression المقابلة لذلك.
الموارد
- يمكن العثور على منشور مدونة يشرح PatchTST بالتفصيل هنا. كما يمكن فتح المدونة في Google Colab.
PatchTSTConfig
فئة transformers.PatchTSTConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonenum_input_channels: int = 1context_length: int = 32distribution_output: str = 'student_t'loss: str | None = 'mse'patch_length: int = 1patch_stride: int = 1num_hidden_layers: int = 3d_model: int = 128num_attention_heads: int = 4share_embedding: bool = Truechannel_attention: bool = Falseffn_dim: int = 512norm_type: str = 'batchnorm'norm_eps: float = 1e-05attention_dropout: float | int = 0.0positional_dropout: float | int = 0.0path_dropout: float | int = 0.0ff_dropout: float | int = 0.0bias: bool = Trueactivation_function: str = 'gelu'pre_norm: bool = Truepositional_encoding_type: str = 'sincos'use_cls_token: bool = Falseinit_std: float = 0.02share_projection: bool = Truescaling: str | bool | None = 'std'do_mask_input: bool | None = Nonemask_type: str = 'random'random_mask_ratio: float = 0.5num_forecast_mask_patches: list[int] | tuple[int, ...] | int | None = (2,)channel_consistent_masking: bool | None = Falseunmasked_channel_indices: list[int] | None = Nonemask_value: int = 0pooling_type: str | None = 'mean'head_dropout: float | int = 0.0prediction_length: int = 24num_targets: int = 1output_range: list | None = Nonenum_parallel_samples: int = 100 )
المعاملات
- 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")، وبالنسبة لتقديرات النقاط تكون متوسط مربع الخطأ. - patch_length (
int، اختياري، القيمة الافتراضية 1) — تحديد طول الباتش (patch) في عملية التقطيع (patchification). - patch_stride (
int، اختياري، القيمة الافتراضية 1) — تحدد خطوة عملية التقطيع (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") — التطبيع في كل طبقة من طبقات Transformers. يمكن أن تكون"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) المستخدم بين الطبقتين في الشبكات الأمامية (Feed-forward). - 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) المطبّقة لإخفاء بيانات الإدخال أثناء التدريب المسبق العشوائي. - num_forecast_mask_patches (
intأوlist، اختياري، القيمة الافتراضية[2]) — عدد البقع التي سيتم إخفاؤها في نهاية كل عينة من الدفعة. إذا كانت قيمة عددية صحيحة، فستتمتع جميع العينات في الدفعة بنفس عدد البقع المخفية. أما إذا كانت قائمة، فسيتم إخفاء البقع في عينات الدفعة عشوائياً وفقاً للأعداد المحددة في القائمة. يُستخدم هذا الحجة فقط للتدريب المسبق للتنبؤ. - channel_consistent_masking (
bool، اختياري، القيمة الافتراضيةFalse) — إذا كانت قيمة channel consistent masking هي True، فستتبع جميع القنوات نفس نمط الإخفاء (masking). - 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) المخزنة لإعدادات نموذج PatchTSTModel. تُستخدم لاستحداث نموذج Patchtst وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ ibm-granite/granite-timeseries-patchtst
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
>>> 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.configPatchTSTModel
فئة transformers.PatchTSTModel
< source >( config: PatchTSTConfig )
المعاملات
- config (PatchTSTConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Patchtst الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( past_values: Tensorpast_observed_mask: typing.Optional[torch.Tensor] = Nonefuture_values: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs )
المعاملات
- 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, اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات أم لا - output_attentions (
bool, اختياري) — ما إذا كان يجب إرجاع انتباه المخرجات لجميع الطبقات أم لا - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاعModelOutputبدلاً من tuple عادي.
أمثلة:
>>> 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_statePatchTSTForPrediction
فئة transformers.PatchTSTForPrediction
< source >( config: PatchTSTConfig )
المعاملات
- config (PatchTSTConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج PatchTST للتنبؤ.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( past_values: Tensorpast_observed_mask: typing.Optional[torch.Tensor] = Nonefuture_values: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs )
المعاملات
- 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, اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات أم لا - output_attentions (
bool, اختياري) — ما إذا كان يجب إرجاع انتباه المخرجات لجميع الطبقات أم لا - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاعModelOutputبدلاً من tuple عادي.
أمثلة:
>>> 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_outputsPatchTSTForClassification
فئة transformers.PatchTSTForClassification
< source >( config: PatchTSTConfig )
المعاملات
- config (PatchTSTConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج PatchTST للتصنيف.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( past_values: Tensortarget_values: typing.Optional[torch.Tensor] = Nonepast_observed_mask: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → PatchTSTForClassificationOutput or tuple(torch.Tensor)
المعاملات
- 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، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
PatchTSTForClassificationOutput أو tuple(torch.Tensor)
PatchTSTForClassificationOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (PatchTSTConfig) والمدخلات.
تتجاوز طريقة 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) — مجموعة من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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> 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_logitsPatchTSTForPretraining
فئة transformers.PatchTSTForPretraining
< source >( config: PatchTSTConfig )
المعاملات
- config (PatchTSTConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج PatchTST للتدريب المسبق.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( past_values: Tensorpast_observed_mask: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs )
المعاملات
- 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, اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات أم لا - output_attentions (
bool, اختياري) — ما إذا كان يجب إرجاع انتباه المخرجات لجميع الطبقات أم لا - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاعModelOutputبدلاً من tuple عادي.
أمثلة:
>>> 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
< source >( config: PatchTSTConfig )
المعاملات
- config (PatchTSTConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج PatchTST للانحدار.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( past_values: Tensortarget_values: typing.Optional[torch.Tensor] = Nonepast_observed_mask: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → PatchTSTForRegressionOutput or tuple(torch.Tensor)
المعاملات
- 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، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
PatchTSTForRegressionOutput أو tuple(torch.Tensor)
أحد PatchTSTForRegressionOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (PatchTSTConfig) والمدخلات.
تتجاوز طريقة PatchTSTForRegression الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
*optional*, returned whenlabelsis provided,torch.Tensorof 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) — مجموعة من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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> 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