Transformers documentation
PatchTST
이 모델은 2022-11-27에 HF papers에 게시되었으며, 2023-11-13에 Hugging Face Transformers에 기여되었습니다.
PatchTST
개요
PatchTST 모델은 Yuqi Nie, Nam H. Nguyen, Phanwadee Sinthong, Jayant Kalagnanam이 A Time Series is Worth 64 Words: Long-term Forecasting with Transformers에서 제안했습니다.
개략적으로, 모델은 주어진 크기의 패치로 시계열을 벡터화한 후, 생성된 벡터 시퀀스를 Transformer로 인코딩합니다. 이후 적절한 헤드를 통해 예측 길이에 해당하는 예측값을 출력합니다. 모델 구조는 다음 그림에 나와 있습니다:
해당 논문의 초록은 다음과 같습니다:
다변수 시계열 예측 및 자기지도 표현 학습을 위한 Transformer 기반 모델의 효율적인 설계를 제안합니다. 이 설계는 두 가지 핵심 구성 요소에 기반합니다: (i) Transformer의 입력 토큰으로 제공되는 서브시리즈 수준의 패치로 시계열을 분할하는 것; (ii) 각 채널이 단일 단변수 시계열을 포함하고 모든 시계열에 걸쳐 동일한 임베딩 및 Transformer 가중치를 공유하는 채널 독립성. 패칭 설계는 세 가지 이점을 자연스럽게 제공합니다: 임베딩에 로컬 의미 정보가 보존되고, 동일한 look-back window 조건에서 어텐션 맵의 계산 및 메모리 사용량이 제곱으로 감소하며, 모델이 더 긴 히스토리에 주목할 수 있습니다. 제안하는 채널 독립 패치 시계열 Transformer(PatchTST)는 SOTA Transformer 기반 모델과 비교할 때 장기 예측 정확도를 크게 향상시킵니다. 또한, 모델을 자기지도 사전 학습 작업에 적용하여 뛰어난 fine-tuning 성능을 달성했으며, 이는 대규모 데이터셋에서 지도 학습보다 우수한 결과를 보입니다. 하나의 데이터셋에서 마스크된 사전 학습된 표현을 다른 데이터셋으로 이전하는 것 역시 SOTA 수준의 예측 정확도를 제공합니다.
이 모델은 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") — loss가 “nll”일 때 모델의 분포 출력 헤드입니다. “student_t”, “normal”, “negative_binomial” 중 하나를 사용할 수 있습니다. - loss (
str, 선택 사항, 기본값"mse") —distribution_output헤드에 해당하는 모델의 손실 함수입니다. 매개변수 분포의 경우 음의 로그 가능도(“nll”), 점 추정치의 경우 평균 제곱 오차 “mse”입니다. - patch_length (
int, 선택 사항, 기본값 1) — Patchification 과정의 패치 길이를 정의합니다. - patch_stride (
int, 선택 사항, 기본값 1) — 패치화 과정의 스트라이드를 정의합니다. - num_hidden_layers (
int, 선택 사항, 기본값3) — Transformer 디코더의 숨겨진 레이어 수입니다. - d_model (
int, 선택 사항, 기본값128) — 인코더 레이어와 풀러 레이어의 크기입니다. - num_attention_heads (
int, 선택 사항, 기본값 4) — Transformer 인코더의 각 attention layer에 사용할 attention head의 수입니다. - share_embedding (
bool, 선택 사항, 기본값True) — 모든 채널에 걸쳐 입력 임베딩을 공유합니다. - channel_attention (
bool, 선택 사항, 기본값False) — Transformer에서 채널 어텐션 블록을 활성화하여 각 채널이 서로를 어텐션하도록 합니다. - ffn_dim (
int, 선택 사항, 기본값 512) — Transformer 인코더의 “중간” 레이어(일반적으로 feed-forward 레이어라고도 함)의 차원. - norm_type (
str, 선택 사항, 기본값"batchnorm") — 각 Transformer 레이어에서 적용되는 정규화 방식입니다."batchnorm"또는"layernorm"를 사용할 수 있습니다. - norm_eps (
float, 선택 사항, 기본값 1e-05) — 정규화의 수치적 안정성을 위해 분모에 추가되는 값. - attention_dropout (
Union[float, int], 선택 사항, 기본값0.0) — Attention 확률에 적용할 dropout 비율입니다. - positional_dropout (
float, 선택 사항, 기본값 0.0) — 위치 임베딩 레이어의 dropout 확률입니다. - path_dropout (
float, 선택 사항, 기본값 0.0) — 잔차 블록의 dropout 경로입니다. - ff_dropout (
float, 선택 사항, 기본값 0.0) — 피드포워드 네트워크의 두 레이어 사이에 사용되는 dropout 확률입니다. - bias (
bool, 선택 사항, 기본값True) — 피드포워드 네트워크에 bias를 추가할지 여부입니다. - activation_function (
str, 선택 사항, 기본값"gelu") — Transformer에서 사용되는 비선형 활성화 함수(문자열)입니다."gelu"와"relu"를 지원합니다. - pre_norm (
bool, 선택 사항, 기본값True) —True로 설정된 경우, self-attention 전에 normalization이 적용됩니다. 그렇지 않으면 residual block 후에 normalization이 적용됩니다. - 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") —None인 경우 스케일러를 사용하지 않고, “mean” 스케일러 또는 “std” 스케일러를 통해 입력 타겟을 스케일링할지 여부입니다.True인 경우 스케일러가 “mean”으로 설정됩니다. - do_mask_input (
bool, 선택 사항) — 사전 학습 중에 마스킹을 적용합니다. - mask_type (
str, 선택 사항, 기본값"random") — 마스킹 유형. 현재"random"와"forecast"만 지원됩니다. - random_mask_ratio (
float, 선택 사항, 기본값 0.5) — 무작위 사전 학습 중 입력 데이터를 마스킹할 때 적용되는 마스킹 비율입니다. - num_forecast_mask_patches (
int또는list, 선택, 기본값[2]) — 각 배치 샘플의 끝에서 마스킹할 패치의 수입니다. 정수인 경우, 배치 내 모든 샘플에 동일한 수의 패치가 마스킹됩니다. 리스트인 경우, 리스트에 정의된 숫자에 따라 배치 내 샘플이 무작위로 마스킹됩니다. 이 인수는 forecast pretraining에서만 사용됩니다. - 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) — head에 적용할 dropout 확률입니다. - prediction_length (
int, 선택 사항, 기본값 24) — 모델이 출력할 예측 기간입니다. - num_targets (
int, 선택, 기본값 1) — 회귀 및 분류 작업의 대상(target) 수입니다. 분류의 경우 클래스 수를 의미합니다. - output_range (
list, 선택 사항) — 회귀 작업의 출력 범위입니다. 출력 값의 범위를 설정하여 모델이 해당 범위 내의 값을 생성하도록 강제할 수 있습니다. - num_parallel_samples (
int, 선택 사항, 기본값 100) — 확률적 예측을 위해 병렬로 생성되는 샘플의 수입니다.
이것은 PatchTSTModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Patchtst 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 ibm-granite/granite-timeseries-patchtst와 유사한 설정이 생성됩니다.
Configuration 객체는 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
class transformers.PatchTSTModel
< source >( config: PatchTSTConfig )
매개변수
- config (PatchTSTConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델에 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Model의 경우, 상단에 특정 헤드가 없는 상태에서 원시 hidden-states를 출력하는 순수한 Patchtst 모델입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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, shape(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)에 대해 0
- future_values (
torch.BoolTensor, shape(batch_size, prediction_length, num_input_channels), 선택 사항) —past_values와 연관된 미래 대상 값 - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부 - output_attentions (
bool, 선택) — 모든 레이어의 출력 attention을 반환할지 여부 - return_dict (
bool, 선택) — 일반 튜플 대신ModelOutput를 반환할지 여부.
예:
>>> 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에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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, shape(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)에 대해 0
- future_values (
torch.Tensor, shape(bs, forecast_len, num_input_channels), 선택 사항) —past_values와 연관된 미래 대상 값 - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부 - output_attentions (
bool, 선택) — 모든 레이어의 출력 attention을 반환할지 여부 - return_dict (
bool, 선택) — 일반 튜플 대신ModelOutput를 반환할지 여부.
예:
>>> 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
class transformers.PatchTSTForClassification
< source >( config: PatchTSTConfig )
매개변수
- config (PatchTSTConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델에 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
분류 모델인 PatchTST.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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, shape(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)에 대해 0
- output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
PatchTSTForClassificationOutput 또는 tuple(torch.Tensor)
PatchTSTForClassificationOutput 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(PatchTSTConfig)과 입력에 따라 다양한 요소를 포함합니다.
PatchTSTForClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
*optional*,labels이 제공될 때 반환됨,(1,)모양의torch.Tensor) — masked language modeling loss와 next sequence prediction (classification) loss의 합으로 계산된 총 손실.prediction_logits (
torch.Tensor, shape(batch_size, num_targets)) — PatchTST modeling head의 예측 점수(SoftMax 적용 전 점수).hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
예:
>>> 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
class transformers.PatchTSTForPretraining
< source >( config: PatchTSTConfig )
매개변수
- config (PatchTSTConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델에 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
모델용 PatchTST.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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, shape(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)에 대해 0
- output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부 - output_attentions (
bool, 선택) — 모든 레이어의 출력 attention을 반환할지 여부 - return_dict (
bool, 선택) — 일반 tuple 대신ModelOutput를 반환할지 여부.
예:
>>> 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에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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, shape(bs, sequence_length, num_input_channels), 필수) — 모델에 입력되는 시퀀스 - target_values (
torch.Tensor, shape(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)의 경우 0.
일반 튜플 대신
ModelOutput을 반환할지 여부.
- output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
PatchTSTForRegressionOutput 또는 tuple(torch.Tensor)
PatchTSTForRegressionOutput 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(PatchTSTConfig)과 입력에 따라 다양한 요소를 포함합니다.
PatchTSTForRegression의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
*optional*,labels이 제공될 때 반환됨,torch.Tensor, shape(1,)) — MSE loss.regression_outputs (
torch.Tensor, shape(batch_size, num_targets)) — 시계열 모델링 헤드의 회귀 출력입니다.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
예:
>>> 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