Transformers 文件
PatchTSMixer
並獲得增強的文件體驗
開始使用
PatchTSMixer
概述
PatchTSMixer 模型由 Vijay Ekambaram、Arindam Jati、Nam Nguyen、Phanwadee Sinthong 和 Jayant Kalagnanam 在 TSMixer: 輕量級 MLP-Mixer 模型用於多元時間序列預測 中提出。
PatchTSMixer 是一種基於 MLP-Mixer 架構的輕量級時間序列建模方法。在此 HuggingFace 實現中,我們提供了 PatchTSMixer 的功能,以輕鬆促進跨補丁、通道和隱藏特徵的輕量級混合,從而實現有效的多元時間序列建模。它還支援各種注意力機制,從簡單的門控注意力到更復雜的自注意力塊,可以相應地進行自定義。該模型可以進行預訓練,隨後用於各種下游任務,例如預測、分類和迴歸。
論文摘要如下:
TSMixer 是一種輕量級神經網路架構,完全由多層感知器 (MLP) 模組組成,專為補丁化時間序列的多元預測和表示學習而設計。我們的模型從計算機視覺中 MLP-Mixer 模型的成功中汲取靈感。我們展示了將 Vision MLP-Mixer 適應時間序列所面臨的挑戰,並引入了經驗驗證的元件以提高準確性。這包括一種新穎的設計正規化,即在 MLP-Mixer 骨幹網路上附加線上協調頭,用於明確建模時間序列屬性,例如層次結構和通道相關性。我們還提出了一種混合通道建模方法,以有效處理嘈雜的通道互動和跨不同資料集的泛化,這是現有補丁通道混合方法中的常見挑戰。此外,在骨幹網路中引入了一種簡單的門控注意力機制,以優先考慮重要特徵。透過整合這些輕量級元件,我們顯著增強了簡單 MLP 結構的學習能力,以最小的計算量優於複雜的 Transformer 模型。此外,TSMixer 的模組化設計使其與監督和掩碼自監督學習方法相容,使其成為時間序列基礎模型的有前景的構建塊。TSMixer 在預測方面以 8-60% 的顯著優勢優於最先進的 MLP 和 Transformer 模型。它還以顯著降低記憶體和執行時(2-3 倍)的優勢優於最新的 Patch-Transformer 模型的強大基準(1-2%)。
該模型由 ajati、vijaye12、gsinthong、namctin、wmgifford、kashif 貢獻。
使用示例
以下程式碼片段展示瞭如何隨機初始化 PatchTSMixer 模型。該模型與 Trainer API 相容。
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 和 PatchTSMixerForRegression 類。
資源
- 此處提供了一篇深入解釋 PatchTSMixer 的部落格文章:此處。該部落格也可在 Google Colab 中開啟。
PatchTSMixerConfig
class transformers.PatchTSMixerConfig
< 來源 >( 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 = 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: typing.Union[str, bool, NoneType] = 'std' loss: str = 'mse' init_std: float = 0.02 post_init: bool = False norm_eps: float = 1e-05 mask_type: str = 'random' random_mask_ratio: float = 0.5 num_forecast_mask_patches: typing.Union[list[int], int, NoneType] = [2] mask_value: int = 0 masked_loss: bool = True channel_consistent_masking: bool = True unmasked_channel_indices: typing.Optional[list[int]] = None head_dropout: float = 0.2 distribution_output: str = 'student_t' prediction_length: int = 16 prediction_channel_indices: typing.Optional[list] = None num_targets: int = 3 output_range: typing.Optional[list] = None head_aggregation: str = 'max_pool' **kwargs )
引數
- context_length (
int
, 可選, 預設為 32) — 輸入序列的上下文/歷史長度。 - patch_length (
int
, 可選, 預設為 8) — 輸入序列的補丁長度。 - num_input_channels (
int
, 可選, 預設為 1) — 輸入變數的數量。對於單變數時間序列,設定為 1。 - patch_stride (
int
, 可選, 預設為 8) — 確定兩個連續補丁之間的重疊。如果需要非重疊補丁,請將其設定為 patch_length(或更大)。 - num_parallel_samples (
int
, 可選, 預設為 100) — 為機率預測並行生成的樣本數。 - d_model (
int
, 可選, 預設為 8) — 模型的隱藏維度。建議設定為 patch_length 的倍數(即 patch_length 的 2-5 倍)。值越大表示模型越複雜。 - expansion_factor (
int
, 可選, 預設為 2) — MLP 內部使用的擴充套件因子。建議範圍為 2-5。值越大表示模型越複雜。 - num_layers (
int
, 可選, 預設為 3) — 要使用的層數。建議範圍為 3-15。值越大表示模型越複雜。 - dropout (
float
, 可選, 預設為 0.2) —PatchTSMixer
骨幹網路的 dropout 機率。建議範圍為 0.2-0.7。 - mode (
str
, 可選, 預設為"common_channel"
) — 混合器模式。確定如何處理通道。允許的值:“common_channel”、“mix_channel”。在“common_channel”模式下,我們遵循通道獨立建模,沒有顯式通道混合。通道混合透過跨通道共享權重以隱式方式發生。(首選方法)在“mix_channel”模式下,除了補丁和特徵混合器之外,我們還遵循顯式通道混合。(當通道相關性對於建模非常重要時,首選方法) - gated_attn (
bool
, 可選, 預設為True
) — 啟用門控注意力。 - 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) — 截斷正態權重初始化分佈的標準差。 - post_init (
bool
, 可選, 預設為False
) — 是否使用transformers
庫中的自定義權重初始化,或PyTorch
中的預設初始化。設定為False
將執行PyTorch
權重初始化。 - norm_eps (
float
, 可選, 預設為 1e-05) — 為規範化數值穩定性新增到分母的值。 - mask_type (
str
, 可選, 預設為"random"
) — 用於掩碼預訓練模式的掩碼型別。允許的值為“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,則時間序列所有通道的掩碼將相同。否則,掩碼位置將因通道而異。 - unmasked_channel_indices (
list
, 可選) — 預訓練期間未掩碼的通道索引。 - head_dropout (
float
, 可選, 預設為 0.2) —PatchTSMixer
頭的 dropout 機率。 - 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 模型,定義模型架構。使用預設值例項化配置將產生與 PatchTSMixer ibm/patchtsmixer-etth1-pretrain 架構類似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
示例
>>> 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
class transformers.PatchTSMixerModel
< 來源 >( config: PatchTSMixerConfig mask_input: bool = False )
引數
- config (PatchTSMixerConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型關聯的權重,僅載入配置。請檢視 from_pretrained() 方法以載入模型權重。
- mask_input (
bool
, 可選, 預設為False
) — 是否使用PatchTSMixerMasking
模組對輸入進行掩碼。
用於時間序列預測的 PatchTSMixer 模型。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的一般方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch Module 使用,並參考 PyTorch 文件中所有與一般用法和行為相關的事項。
forward
< 來源 >( past_values: Tensor observed_mask: typing.Optional[torch.Tensor] = None output_hidden_states: typing.Optional[bool] = False return_dict: typing.Optional[bool] = None ) → transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerModelOutput
或 tuple(torch.FloatTensor)
引數
- past_values (形狀為
(batch_size, seq_length, num_input_channels)
的torch.FloatTensor
) — 時間序列的上下文值。對於預訓練任務,這表示用於預測掩碼部分的輸入時間序列。對於預測任務,這表示歷史/過去時間序列值。類似地,對於分類或迴歸任務,它表示時間序列的適當上下文值。對於單變數時間序列,
num_input_channels
維度應為 1。對於多變數時間序列,它大於 1。 - observed_mask (形狀為
(batch_size, sequence_length, num_input_channels)
的torch.FloatTensor
, 可選) — 布林掩碼,指示哪些past_values
被觀測到,哪些缺失。掩碼值在[0, 1]
中選擇:- 對於觀測值,為 1,
- 對於缺失值(即被零替換的 NaN),為 0。
- output_hidden_states (
bool
, 可選, 預設為False
) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerModelOutput
或 tuple(torch.FloatTensor)
一個 transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerModelOutput
或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),其中包含各種元素,具體取決於配置 (PatchTSMixerConfig) 和輸入。
- last_hidden_state (形狀為
(batch_size, num_channels, num_patches, d_model)
的torch.FloatTensor
) — 模型最後一層的隱藏狀態輸出。 - hidden_states (
tuple(torch.FloatTensor)
, 可選) — 模型每層的隱藏狀態。 - patch_input (形狀為
(batch_size, num_channels, num_patches, patch_length)
的torch.FloatTensor
) — 模型的補丁輸入資料。 - mask (形狀為
(batch_size, num_channels, num_patches)
的torch.FloatTensor
, 可選) — 布林張量,指示掩碼補丁為 True,否則為 False。 - loc (
torch.FloatTensor
,形狀為(batch_size, 1, num_channels)
,可選) — 提供每個通道的上下文視窗平均值。如果啟用了 revin,則用於模型外部的 revin denorm。 - scale (
torch.FloatTensor
,形狀為(batch_size, 1, num_channels)
,可選) — 提供每個通道的上下文視窗標準差。如果啟用了 revin,則用於模型外部的 revin denorm。
PatchTSMixerModel 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項而不是直接呼叫此函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。
PatchTSMixerForPrediction
class transformers.PatchTSMixerForPrediction
< source >( config: PatchTSMixerConfig )
用於預測應用的 PatchTSMixer
。
forward
< source >( past_values: Tensor observed_mask: typing.Optional[torch.Tensor] = None future_values: typing.Optional[torch.Tensor] = None output_hidden_states: typing.Optional[bool] = False return_loss: bool = True return_dict: typing.Optional[bool] = None ) → transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForPredictionOutput
或 tuple(torch.FloatTensor)
引數
- past_values (
torch.FloatTensor
,形狀為(batch_size, seq_length, num_input_channels)
) — 時間序列的上下文值。對於預訓練任務,這表示用於預測被掩碼部分的輸入時間序列。對於預測任務,這表示歷史/過去時間序列值。類似地,對於分類或迴歸任務,它表示時間序列的相應上下文值。對於單變數時間序列,
num_input_channels
維度應為 1。對於多變數時間序列,它大於 1。 - observed_mask (
torch.FloatTensor
,形狀為(batch_size, sequence_length, num_input_channels)
,可選) — 布林掩碼,指示哪些past_values
被觀察到,哪些是缺失的。掩碼值選擇在[0, 1]
中:- 1 表示**已觀察**到的值,
- 0 表示**缺失**的值(即被零替換的 NaNs)。
- future_values (
torch.FloatTensor
,形狀為用於預測的(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
,可選,預設為False
) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_loss (
bool
,可選) — 是否在forward
呼叫中返回損失。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForPredictionOutput
或 tuple(torch.FloatTensor)
一個 transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForPredictionOutput
或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或當 config.return_dict=False
時),包含根據配置(PatchTSMixerConfig)和輸入而異的各種元素。
- loss (
*可選*
,在提供y
時返回,torch.FloatTensor
,形狀為()
) — 總損失。 - prediction_outputs (
torch.FloatTensor
,形狀為(batch_size, prediction_length, num_input_channels)
) — 來自預測頭的預測輸出。 - last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, num_input_channels, num_patches, d_model)
) — 經過頭部之前的骨幹嵌入。 - hidden_states (
tuple(torch.FloatTensor)
,可選) — 模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。 - loc (
torch.FloatTensor
,可選,形狀為(batch_size, 1, num_input_channels)
) — 輸入平均值 - scale (
torch.FloatTensor
,可選,形狀為(batch_size, 1, num_input_channels)
) — 輸入標準差
PatchTSMixerForPrediction 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項而不是直接呼叫此函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。
PatchTSMixerForTimeSeriesClassification
class transformers.PatchTSMixerForTimeSeriesClassification
< source >( config: PatchTSMixerConfig )
用於分類應用的 PatchTSMixer
。
forward
< source >( past_values: Tensor target_values: typing.Optional[torch.Tensor] = None output_hidden_states: typing.Optional[bool] = False return_loss: bool = True return_dict: typing.Optional[bool] = None ) → transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForTimeSeriesClassificationOutput
或 tuple(torch.FloatTensor)
引數
- past_values (
torch.FloatTensor
,形狀為(batch_size, seq_length, num_input_channels)
) — 時間序列的上下文值。對於預訓練任務,這表示用於預測被掩碼部分的輸入時間序列。對於預測任務,這表示歷史/過去時間序列值。類似地,對於分類或迴歸任務,它表示時間序列的相應上下文值。對於單變數時間序列,
num_input_channels
維度應為 1。對於多變數時間序列,它大於 1。 - target_values (
torch.FloatTensor
,形狀為用於預測的(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
,可選,預設為False
) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_loss (
bool
,可選) — 是否在forward
呼叫中返回損失。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForTimeSeriesClassificationOutput
或 tuple(torch.FloatTensor)
一個 transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForTimeSeriesClassificationOutput
或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或當 config.return_dict=False
時),包含根據配置(PatchTSMixerConfig)和輸入而異的各種元素。
- loss (
*可選*
,在提供y
時返回,torch.FloatTensor
,形狀為()
) — 總損失。 - prediction_outputs (
torch.FloatTensor
,形狀為(batch_size, num_labels)
) — 來自分類頭的預測輸出。 - last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, num_input_channels, num_patches, d_model)
) — 經過頭部之前的骨幹嵌入。 - hidden_states (
tuple(torch.FloatTensor)
,可選) — 模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
PatchTSMixerForTimeSeriesClassification 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項而不是直接呼叫此函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。
PatchTSMixerForPretraining
class transformers.PatchTSMixerForPretraining
< source >( config: PatchTSMixerConfig )
引數
- config (PatchTSMixerConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
用於掩碼預訓練的 PatchTSMixer
。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的一般方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch Module 使用,並參考 PyTorch 文件中所有與一般用法和行為相關的事項。
forward
< source >( past_values: Tensor observed_mask: typing.Optional[torch.Tensor] = None output_hidden_states: typing.Optional[bool] = False return_loss: bool = True return_dict: typing.Optional[bool] = None ) → transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForPreTrainingOutput
或 tuple(torch.FloatTensor)
引數
- past_values (
torch.FloatTensor
,形狀為(batch_size, seq_length, num_input_channels)
) — 時間序列的上下文值。對於預訓練任務,這表示用於預測被掩碼部分的輸入時間序列。對於預測任務,這表示歷史/過去時間序列值。類似地,對於分類或迴歸任務,它表示時間序列的相應上下文值。對於單變數時間序列,
num_input_channels
維度應為 1。對於多變數時間序列,它大於 1。 - observed_mask (
torch.FloatTensor
,形狀為(batch_size, sequence_length, num_input_channels)
,可選) — 布林掩碼,指示哪些past_values
被觀察到,哪些是缺失的。掩碼值選擇在[0, 1]
中:- 1 表示**已觀察**到的值,
- 0 表示**缺失**的值(即被零替換的 NaNs)。
- output_hidden_states (
bool
,可選,預設為False
) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_loss (
bool
,可選) — 是否在forward
呼叫中返回損失。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForPreTrainingOutput
或 tuple(torch.FloatTensor)
一個 transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForPreTrainingOutput
或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或當 config.return_dict=False
時),包含根據配置(PatchTSMixerConfig)和輸入而異的各種元素。
- loss (
*可選*
,在提供y
時返回,torch.FloatTensor
,形狀為()
) — 總損失 - prediction_outputs (
torch.FloatTensor
,形狀為(batch_size, num_input_channels, num_patches, patch_length)
) — 來自預訓練頭的預測輸出。 - last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, num_input_channels, num_patches, d_model)
) — 經過頭部之前的骨幹嵌入。 - hidden_states (
tuple(torch.FloatTensor)
, 可選) — 模型每層的隱藏狀態。
PatchTSMixerForPretraining 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項而不是直接呼叫此函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。
PatchTSMixerForRegression
class transformers.PatchTSMixerForRegression
< source >( config: PatchTSMixerConfig )
引數
- config (PatchTSMixerConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
用於迴歸應用的 PatchTSMixer
。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的一般方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch Module 使用,並參考 PyTorch 文件中所有與一般用法和行為相關的事項。
forward
< source >( past_values: Tensor target_values: typing.Optional[torch.Tensor] = None output_hidden_states: typing.Optional[bool] = False return_loss: bool = True return_dict: typing.Optional[bool] = None ) → transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForRegressionOutput
或 tuple(torch.FloatTensor)
引數
- past_values (
torch.FloatTensor
,形狀為(batch_size, seq_length, num_input_channels)
) — 時間序列的上下文值。對於預訓練任務,這表示用於預測被掩碼部分的輸入時間序列。對於預測任務,這表示歷史/過去時間序列值。類似地,對於分類或迴歸任務,它表示時間序列的相應上下文值。對於單變數時間序列,
num_input_channels
維度應為 1。對於多變數時間序列,它大於 1。 - target_values (
torch.FloatTensor
,形狀為用於預測的(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
,可選,預設為False
) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_loss (
bool
,可選) — 是否在forward
呼叫中返回損失。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForRegressionOutput
或 tuple(torch.FloatTensor)
一個 transformers.models.patchtsmixer.modeling_patchtsmixer.PatchTSMixerForRegressionOutput
或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或當 config.return_dict=False
時),包含根據配置(PatchTSMixerConfig)和輸入而異的各種元素。
- loss (
*可選*
,在提供y
時返回,torch.FloatTensor
,形狀為()
) — 總損失。 - regression_outputs (
torch.FloatTensor
,形狀為(batch_size, num_targets)
) — 來自迴歸頭的預測輸出。 - last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, num_input_channels, num_patches, d_model)
) — 經過頭部之前的骨幹嵌入。 - hidden_states (
tuple(torch.FloatTensor)
,可選) — 模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
PatchTSMixerForRegression 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項而不是直接呼叫此函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。