Transformers documentation
PatchTST
Mô hình này được công bố trên HF papers vào ngày 27-11-2022 và được đóng góp cho Hugging Face Transformers vào ngày 13-11-2023.
PatchTST
Tổng quan
Mô hình PatchTST được đề xuất trong A Time Series is Worth 64 Words: Long-term Forecasting with Transformers bởi Yuqi Nie, Nam H. Nguyen, Phanwadee Sinthong và Jayant Kalagnanam.
Ở cấp độ tổng quan, mô hình vector hóa chuỗi thời gian thành các patch có kích thước cho trước và mã hóa chuỗi vector kết quả thông qua một Transformer, sau đó đưa ra dự báo có độ dài dự đoán thông qua một head phù hợp. Mô hình được minh họa trong hình sau:
Tóm tắt từ bài báo như sau:
Chúng tôi đề xuất một thiết kế hiệu quả cho các mô hình dựa trên Transformer dành cho dự báo chuỗi thời gian đa biến và học biểu diễn tự giám sát. Nó dựa trên hai thành phần chính: (i) phân đoạn chuỗi thời gian thành các patch ở cấp độ chuỗi con, đóng vai trò là các token đầu vào cho Transformer; (ii) tính độc lập theo kênh, trong đó mỗi kênh chứa một chuỗi thời gian đơn biến duy nhất và chia sẻ cùng một embedding cùng trọng số Transformer trên tất cả các chuỗi. Thiết kế patch mang lại ba lợi ích tự nhiên: thông tin ngữ nghĩa cục bộ được giữ lại trong embedding; chi phí tính toán và bộ nhớ sử dụng của các bản đồ chú ý giảm theo bậc hai khi giữ nguyên cửa sổ nhìn lại; và mô hình có thể chú ý đến lịch sử dài hơn. Mô hình Transformer chuỗi thời gian patch độc lập theo kênh (PatchTST) của chúng tôi có thể cải thiện đáng kể độ chính xác dự báo dài hạn so với các mô hình dựa trên Transformer SOTA. Chúng tôi cũng áp dụng mô hình của mình cho các nhiệm vụ tiền huấn luyện tự giám sát và đạt được hiệu suất tinh chỉnh xuất sắc, vượt trội hơn so với huấn luyện có giám sát trên các bộ dữ liệu lớn. Việc chuyển giao biểu diễn tiền huấn luyện có che (masked) từ một bộ dữ liệu sang các bộ dữ liệu khác cũng tạo ra độ chính xác dự báo SOTA.
Mô hình này được đóng góp bởi namctin, gsinthong, diepi, vijaye12, wmgifford và kashif. Mã nguồn gốc có thể được tìm thấy tại đây.
Mẹo sử dụng
Mô hình cũng có thể được sử dụng cho phân loại chuỗi thời gian và hồi quy chuỗi thời gian. Xem các lớp PatchTSTForClassification và PatchTSTForRegression tương ứng.
Tài nguyên
- Một bài viết trên blog giải thích chi tiết về PatchTST có thể được tìm thấy tại đây. Bài viết này cũng có thể được mở trong Google Colab.
PatchTSTConfig
lớp 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 )
Tham số
- num_input_channels (
int, tùy chọn, mặc định là1) — Số lượng kênh đầu vào. - context_length (
int, tùy chọn, mặc định là 32) — Chiều dài ngữ cảnh của chuỗi đầu vào. - distribution_output (
str, tuỳ chọn, mặc định là"student_t") — Đầu phát phân phối (distribution emission head) của mô hình khi loss là “nll”. Có thể là “student_t”, “normal” hoặc “negative_binomial”. - loss (
str, tuỳ chọn, mặc định là"mse") — Hàm mất mát cho mô hình tương ứng với đầu radistribution_output. Đối với các phân phối tham số, đây là âm log likelihood (“nll”), còn đối với các ước lượng điểm, đây là sai số bình phương trung bình “mse”. - patch_length (
int, tùy chọn, mặc định là 1) — Xác định độ dài patch của quá trình patchification. - patch_stride (
int, tùy chọn, mặc định là 1) — Định nghĩa bước nhảy (stride) của quá trình patchification. - num_hidden_layers (
int, tùy chọn, mặc định là3) — Số lượng lớp ẩn trong bộ giải mã Transformer. - d_model (
int, tùy chọn, mặc định là128) — Kích thước của các lớp encoder và lớp pooler. - num_attention_heads (
int, tùy chọn, mặc định là 4) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ mã hóa Transformer. - share_embedding (
bool, tùy chọn, mặc định làTrue) — Chia sẻ embedding đầu vào giữa tất cả các kênh. - channel_attention (
bool, tùy chọn, mặc định làFalse) — Kích hoạt khối chú ý kênh trong Transformer để cho phép các kênh chú ý đến nhau. - ffn_dim (
int, tùy chọn, mặc định là 512) — Kích thước của lớp “trung gian” (thường được gọi là lớp feed-forward) trong bộ mã hóa Transformer. - norm_type (
str, tuỳ chọn, mặc định là"batchnorm") — Chuẩn hóa ở mỗi lớp Transformer. Có thể là"batchnorm"hoặc"layernorm". - norm_eps (
float, tùy chọn, mặc định là 1e-05) — Một giá trị được cộng vào mẫu số để đảm bảo tính ổn định số học của phép chuẩn hóa. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các xác suất chú ý. - positional_dropout (
float, tùy chọn, mặc định là 0.0) — Xác suất dropout trong lớp nhúng vị trí. - path_dropout (
float, tùy chọn, mặc định là 0.0) — Tỷ lệ dropout trên đường dẫn trong khối residual. - ff_dropout (
float, tùy chọn, mặc định là 0.0) — Xác suất dropout được sử dụng giữa hai lớp của mạng feed-forward. - bias (
bool, tùy chọn, mặc định làTrue) — Có thêm bias trong các mạng feed-forward hay không. - activation_function (
str, tuỳ chọn, mặc định là"gelu") — Hàm kích hoạt phi tuyến tính (chuỗi) trong Transformer."gelu"và"relu"được hỗ trợ. - pre_norm (
bool, tùy chọn, mặc định làTrue) — Quy trình chuẩn hóa được áp dụng trước self-attention nếu pre_norm được đặt thànhTrue. Ngược lại, chuẩn hóa được áp dụng sau khối residual. - positional_encoding_type (
str, tùy chọn, mặc định là"sincos") — Mã hóa vị trí. Các tùy chọn"random"và"sincos"được hỗ trợ. - use_cls_token (
bool, tùy chọn, mặc định làFalse) — Xác định xem token cls có được sử dụng hay không. - init_std (
float, tuỳ chọn, mặc định là 0.02) — Độ lệch chuẩn của phân phối khởi tạo trọng số chuẩn bị cắt. - share_projection (
bool, tùy chọn, mặc định làTrue) — Chia sẻ lớp chiếu (projection layer) giữa các kênh khác nhau trong đầu dự báo (forecast head). - scaling (
Union, tùy chọn, mặc định là"std") — Liệu có scale các target đầu vào bằng scaler “mean”, scaler “std” hay không scale nếuNonehay không. NếuTrue, scaler sẽ được đặt thành “mean”. - do_mask_input (
bool, tùy chọn) — Áp dụng che mặt (masking) trong quá trình huấn luyện trước (pretraining). - mask_type (
str, tùy chọn, mặc định là"random") — Loại che phủ. Hiện tại chỉ hỗ trợ"random"và"forecast". - random_mask_ratio (
float, tùy chọn, mặc định là 0.5) — Tỷ lệ che (masking) được áp dụng để che dữ liệu đầu vào trong quá trình huấn luyện trước ngẫu nhiên. - num_forecast_mask_patches (
inthoặclist, tùy chọn, mặc định là[2]) — Số lượng patch sẽ bị che ở cuối mỗi mẫu trong batch. Nếu là số nguyên, tất cả các mẫu trong batch sẽ có cùng số lượng patch bị che. Nếu là danh sách, các mẫu trong batch sẽ được che ngẫu nhiên theo các số được định nghĩa trong danh sách. Tham số này chỉ được sử dụng cho forecast pretraining. - channel_consistent_masking (
bool, tùy chọn, mặc định làFalse) — Nếu channel consistent masking là True, tất cả các kênh sẽ có cùng một mẫu masking. - unmasked_channel_indices (
list, tùy chọn) — Chỉ số của các kênh không bị che (masked) trong quá trình tiền huấn luyện. Các giá trị trong danh sách là số nằm trong khoảng từ 1 đếnnum_input_channels - mask_value (
int, tùy chọn, mặc định là 0) — Các giá trị trong các patch bị mask sẽ được điền bằngmask_value. - pooling_type (
str, tùy chọn, mặc định là"mean") — Cách pooling embedding. Hỗ trợ"mean","max"vàNone. - head_dropout (
float, tùy chọn, mặc định là 0.0) — Xác suất dropout cho head. - prediction_length (
int, tùy chọn, mặc định là 24) — Khoảng dự báo mà mô hình sẽ đưa ra. - num_targets (
int, tùy chọn, mặc định là 1) — Số lượng mục tiêu cho các tác vụ hồi quy và phân loại. Đối với phân loại, đây là số lượng lớp. - output_range (
list, tùy chọn) — Khoảng đầu ra cho tác vụ hồi quy. Khoảng giá trị đầu ra có thể được thiết lập để buộc mô hình tạo ra các giá trị nằm trong một khoảng nhất định. - num_parallel_samples (
int, tùy chọn, mặc định là 100) — Số lượng mẫu được tạo song song cho dự đoán xác suất.
Đây là lớp cấu hình để lưu trữ cấu hình của một PatchTSTModel. Nó được sử dụng để khởi tạo một mô hình Patchtst theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của ibm-granite/granite-timeseries-patchtst
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
>>> 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
lớp transformers.PatchTSTModel
< source >( config: PatchTSTConfig )
Tham số
- config (PatchTSTConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình Patchtst cơ bản, xuất ra các hidden-states thô mà không có head cụ thể nào ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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 )
Tham số
- past_values (
torch.Tensorcó hình dạng(bs, sequence_length, num_input_channels), bắt buộc) — Chuỗi đầu vào cho mô hình - past_observed_mask (
torch.BoolTensorcó hình dạng(batch_size, sequence_length, num_input_channels), tùy chọn) — Mặt nạ Boolean để chỉ ra nhữngpast_valuesnào đã được quan sát và những cái nào bị thiếu. Giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các giá trị được quan sát,
- 0 cho các giá trị thiếu (tức là các NaN đã được thay thế bằng số 0).
- future_values (
torch.BoolTensorcó hình dạng(batch_size, prediction_length, num_input_channels), tùy chọn) — Giá trị mục tiêu trong tương lai liên quan đếnpast_values - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn của tất cả các lớp hay không - output_attentions (
bool, tùy chọn) — Có trả về chú ý đầu ra của tất cả các lớp hay không - return_dict (
bool, tùy chọn) — Có trả về mộtModelOutputthay vì một tuple thông thường hay không.
Ví dụ:
>>> 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
lớp transformers.PatchTSTForPrediction
< source >( config: PatchTSTConfig )
Tham số
- config (PatchTSTConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình dự đoán PatchTST.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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 )
Tham số
- past_values (
torch.Tensorcó hình dạng(bs, sequence_length, num_input_channels), bắt buộc) — Chuỗi đầu vào cho mô hình - past_observed_mask (
torch.BoolTensorcó hình dạng(batch_size, sequence_length, num_input_channels), tùy chọn) — Mặt nạ Boolean để chỉ ra nhữngpast_valuesnào đã được quan sát và những cái nào bị thiếu. Giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các giá trị được quan sát,
- 0 cho các giá trị thiếu (tức là các NaN đã được thay thế bằng số 0).
- future_values (
torch.Tensorcó hình dạng(bs, forecast_len, num_input_channels), tùy chọn) — Giá trị mục tiêu trong tương lai liên quan đếnpast_values - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn của tất cả các lớp hay không - output_attentions (
bool, tùy chọn) — Có trả về chú ý đầu ra của tất cả các lớp hay không - return_dict (
bool, tùy chọn) — Có trả về mộtModelOutputthay vì một tuple thông thường hay không.
Ví dụ:
>>> 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
lớp transformers.PatchTSTForClassification
< source >( config: PatchTSTConfig )
Tham số
- config (PatchTSTConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình PatchTST cho phân loại.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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)
Tham số
- past_values (
torch.Tensorcó hình dạng(bs, sequence_length, num_input_channels), bắt buộc) — Chuỗi đầu vào cho mô hình - target_values (
torch.Tensor, tùy chọn) — Nhãn liên kết vớipast_values - past_observed_mask (
torch.BoolTensorcó hình dạng(batch_size, sequence_length, num_input_channels), tùy chọn) — Mặt nạ Boolean để chỉ ra nhữngpast_valuesnào đã được quan sát và những cái nào bị thiếu. Giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các giá trị được quan sát,
- 0 cho các giá trị thiếu (tức là các NaN đã được thay thế bằng số 0).
- output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.
Trả về
PatchTSTForClassificationOutput hoặc tuple(torch.Tensor)
Một PatchTSTForClassificationOutput hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (PatchTSTConfig) và đầu vào.
Phương thức forward của PatchTSTForClassification ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
loss (
*optional*, được trả về khilabelsđược cung cấp,torch.Tensorcó hình dạng(1,)) — Tổng loss là tổng của loss mô hình hóa ngôn ngữ có mặt nạ (masked language modeling) và loss phân loại dự đoán chuỗi tiếp theo (next sequence prediction).prediction_logits (
torch.Tensorcó hình dạng(batch_size, num_targets)) — Điểm dự đoán của đầu mô hình PatchTST (điểm trước SoftMax).hidden_states (
tuple[torch.Tensor], tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple[torch.Tensor], tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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
lớp transformers.PatchTSTForPretraining
< source >( config: PatchTSTConfig )
Tham số
- config (PatchTSTConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
PatchTST cho mô hình pretrain.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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 )
Tham số
- past_values (
torch.Tensorcó hình dạng(bs, sequence_length, num_input_channels), bắt buộc) — Chuỗi đầu vào cho mô hình - past_observed_mask (
torch.BoolTensorcó hình dạng(batch_size, sequence_length, num_input_channels), tùy chọn) — Mặt nạ Boolean để chỉ ra nhữngpast_valuesnào đã được quan sát và những cái nào bị thiếu. Giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các giá trị được quan sát,
- 0 cho các giá trị thiếu (tức là các NaN đã được thay thế bằng số 0).
- output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn của tất cả các lớp hay không - output_attentions (
bool, tùy chọn) — Có trả về chú ý đầu ra của tất cả các lớp hay không - return_dict (
bool, tùy chọn) — Có trả về mộtModelOutputthay vì một tuple thông thường hay không.
Ví dụ:
>>> 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
lớp transformers.PatchTSTForRegression
< source >( config: PatchTSTConfig )
Tham số
- config (PatchTSTConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình PatchTST cho hồi quy.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
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)
Tham số
- past_values (
torch.Tensorcó hình dạng(bs, sequence_length, num_input_channels), bắt buộc) — Chuỗi đầu vào cho mô hình - target_values (
torch.Tensorcó hình dạng(bs, num_input_channels)) — Các giá trị đích liên kết vớipast_values - past_observed_mask (
torch.BoolTensorcó hình dạng(batch_size, sequence_length, num_input_channels), tùy chọn) — Mặt nạ Boolean để chỉ ra nhữngpast_valuesnào đã được quan sát và những cái nào bị thiếu. Các giá trị mặt nạ được chọn trong [0, 1]: 1 cho các giá trị đã được quan sát, 0 cho các giá trị bị thiếu (tức là các NaN đã được thay thế bằng số không). Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.[0, 1]:- 1 cho các giá trị được quan sát,
- 0 cho các giá trị thiếu (tức là các NaN đã được thay thế bằng số 0).
Có nên trả về một
ModelOutputthay vì một tuple thông thường hay không.
- output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.
Trả về
PatchTSTForRegressionOutput hoặc tuple(torch.Tensor)
Một PatchTSTForRegressionOutput hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (PatchTSTConfig) và đầu vào.
Phương thức forward của PatchTSTForRegression ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
loss (
*optional*, được trả về khi cung cấplabels,torch.Tensorcó hình dạng(1,)) — MSE loss.regression_outputs (
torch.Tensorcó hình dạng(batch_size, num_targets)) — Đầu ra hồi quy của các đầu mô hình hóa chuỗi thời gian.hidden_states (
tuple[torch.Tensor], tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple[torch.Tensor], tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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