# Autoformer

## Ikhtisar

Model Autoformer diusulkan dalam [Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting](https://huggingface.co/papers/2106.13008) oleh Haixu Wu, Jiehui Xu, Jianmin Wang, Mingsheng Long.

Model ini memperluas Transformer sebagai arsitektur dekomposisi mendalam, yang dapat secara progresif menguraikan komponen tren dan musiman selama proses peramalan.

Abstrak dari makalah tersebut adalah sebagai berikut:

*Memperpanjang waktu prediksi merupakan kebutuhan kritis untuk aplikasi nyata, seperti peringatan dini cuaca ekstrem dan perencanaan konsumsi energi jangka panjang. Kertas ini mempelajari masalah prediksi jangka panjang pada deret waktu. Model berbasis Transformer sebelumnya mengadopsi berbagai mekanisme self-attention untuk menemukan dependensi jarak jauh. Namun, pola temporal yang rumit dari masa depan jangka panjang menghambat model dalam menemukan dependensi yang andal. Selain itu, Transformer harus mengadopsi versi sparse dari self-attention point-wise untuk efisiensi deret panjang, yang mengakibatkan bottleneck pemanfaatan informasi. Melampaui Transformer, kami merancang Autoformer sebagai arsitektur dekomposisi baru dengan mekanisme Auto-Correlation. Kami mematahkan konvensi pra-pemrosesan dekomposisi deret dan memperbaruinya menjadi blok internal dasar dari model dalam. Desain ini memberdayakan Autoformer dengan kapasitas dekomposisi progresif untuk deret waktu yang kompleks. Lebih lanjut, terinspirasi oleh teori proses stokastik, kami merancang mekanisme Auto-Correlation berdasarkan periodisitas deret, yang melakukan penemuan dependensi dan agregasi representasi pada level sub-deret. Auto-Correlation melampaui self-attention dalam hal efisiensi dan akurasi. Dalam prediksi jangka panjang, Autoformer menghasilkan akurasi state-of-the-art, dengan peningkatan relatif 38% pada enam benchmark, yang mencakup lima aplikasi praktis: energi, lalu lintas, ekonomi, cuaca, dan penyakit.*

Model ini disumbangkan oleh [elisim](https://huggingface.co/elisim) dan [kashif](https://huggingface.co/kashif). Kode aslinya dapat ditemukan [di sini](https://github.com/thuml/Autoformer).

## Sumber daya

Daftar sumber resmi Hugging Face dan komunitas (ditandai dengan 🌎) untuk membantu Anda memulai. Jika Anda tertarik untuk mengirimkan sumber agar disertakan di sini, silakan buka Pull Request dan kami akan meninjaunya! Sumber tersebut sebaiknya mendemonstrasikan sesuatu yang baru, bukan menduplikasi sumber yang sudah ada.

- Lihat blog-post Autoformer di blog HuggingFace: [Ya, Transformers Efektif untuk Peramalan Deret Waktu (+ Autoformer)](https://huggingface.co/blog/autoformer)

## AutoformerConfig[[transformers.AutoformerConfig]]

#### transformers.AutoformerConfig[[transformers.AutoformerConfig]]

```python
transformers.AutoformerConfig(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, 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, is_encoder_decoder: bool = True, prediction_length: int | None = None, context_length: int | None = None, distribution_output: str = 'student_t', loss: str = 'nll', input_size: int = 1, lags_sequence: list[int] | tuple[int, ...] = (1, 2, 3, 4, 5, 6, 7), scaling: bool | str = True, num_time_features: int = 0, num_dynamic_real_features: int = 0, num_static_categorical_features: int = 0, num_static_real_features: int = 0, cardinality: list[int] | None = None, embedding_dimension: list[int] | None = None, d_model: int = 64, encoder_attention_heads: int = 2, decoder_attention_heads: int = 2, encoder_layers: int = 2, decoder_layers: int = 2, encoder_ffn_dim: int = 32, decoder_ffn_dim: int = 32, activation_function: str = 'gelu', dropout: float | int = 0.1, encoder_layerdrop: float | int = 0.1, decoder_layerdrop: float | int = 0.1, attention_dropout: float | int = 0.1, activation_dropout: float | int = 0.1, num_parallel_samples: int = 100, init_std: float = 0.02, use_cache: bool = True, label_length: int = 10, moving_average: int = 25, autocorrelation_factor: int = 3)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/autoformer/configuration_autoformer.py#L24)

**Parameter:**

is_encoder_decoder (`bool`, *opsional*, defaultnya `True`) : Apakah model digunakan sebagai encoder/decoder atau tidak.

prediction_length (`int`, *opsional*) : Panjang prediksi untuk decoder. Dengan kata lain, horizon prediksi dari model.

context_length (`int`, *opsional*, defaultnya `prediction_length`) : Panjang konteks untuk encoder. Jika tidak diset, panjang konteks akan sama dengan `prediction_length`.

distribution_output (`string`, *opsional*, defaultnya `"student_t"`) : Kepala emisi distribusi untuk model. Bisa berupa "student_t", "normal" atau "negative_binomial".

loss (`string`, *opsional*, defaultnya `"nll"`) : Fungsi loss untuk model yang sesuai dengan head `distribution_output`. Untuk distribusi parametrik, ini adalah negative log likelihood (nll) - yang saat ini merupakan satu-satunya yang didukung.

input_size (`int`, *opsional*, defaultnya 1) : Ukuran variabel target yang secara default adalah 1 untuk target univariat. Akan menjadi > 1 dalam kasus target multivariat.

lags_sequence (`list[int]`, *opsional*, defaultnya `[1, 2, 3, 4, 5, 6, 7]`) : Lag dari deret waktu input sebagai kovariat, yang sering ditentukan oleh frekuensinya. Defaultnya adalah `[1, 2, 3, 4, 5, 6, 7]`.

scaling (`bool`, *opsional* defaultnya `True`) : Apakah akan menskalakan target input.

num_time_features (`int`, *opsional*, default 0) : Jumlah fitur waktu dalam deret waktu input.

num_dynamic_real_features (`int`, *opsional*, default 0) : Jumlah fitur bernilai real dinamis.

num_static_categorical_features (`int`, *opsional*, default 0) : Jumlah fitur kategoris statis.

num_static_real_features (`int`, *opsional*, default 0) : Jumlah fitur bernilai real statis.

cardinality (`list[int]`, *opsional*) : Kardinalitas (jumlah nilai berbeda) untuk masing-masing fitur kategoris statis. Harus berupa daftar bilangan bulat, dengan panjang yang sama seperti `num_static_categorical_features`. Tidak boleh `None` jika `num_static_categorical_features` > 0.

embedding_dimension (`list[int]`, *opsional*) : Dimensi dari embeddings dan hidden states.

d_model (`int`, *opsional*, defaultnya `64`) : Ukuran lapisan encoder dan lapisan pooler.

encoder_attention_heads (`int`, *opsional*, defaultnya `2`) : Jumlah kepala perhatian untuk setiap lapisan perhatian dalam encoder Transformer.

decoder_attention_heads (`int`, *opsional*, defaultnya `2`) : Jumlah kepala perhatian untuk setiap lapisan perhatian dalam decoder Transformer.

encoder_layers (`int`, *opsional*, defaultnya `2`) : Jumlah lapisan tersembunyi dalam encoder Transformer. Akan menggunakan nilai yang sama dengan `num_layers` jika tidak diatur.

decoder_layers (`int`, *opsional*, defaultnya `2`) : Jumlah lapisan tersembunyi dalam decoder Transformer. Akan menggunakan nilai yang sama dengan `num_layers` jika tidak diatur.

encoder_ffn_dim (`int`, *opsional*, defaultnya `32`) : Dimensi dari lapisan "intermediate" (sering disebut feed-forward) dalam encoder.

decoder_ffn_dim (`int`, *opsional*, defaultnya `32`) : Dimensi dari lapisan "intermediate" (sering disebut feed-forward) dalam decoder.

activation_function (`str`, *opsional*, defaultnya `gelu`) : Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, `"gelu"`, `"relu"`, `"silu"`, dan sebagainya.

dropout (`Union[float, int]`, *opsional*, defaultnya `0.1`) : Rasio untuk semua lapisan dropout.

encoder_layerdrop (`Union[float, int]`, *opsional*, defaultnya `0.1`) : Probabilitas LayerDrop untuk encoder. Lihat [makalah LayerDrop](see https://huggingface.co/papers/1909.11556) untuk detail lebih lanjut.

decoder_layerdrop (`Union[float, int]`, *opsional*, defaultnya `0.1`) : Probabilitas LayerDrop untuk decoder. Lihat [makalah LayerDrop](see https://huggingface.co/papers/1909.11556) untuk detail lebih lanjut.

attention_dropout (`Union[float, int]`, *opsional*, defaultnya `0.1`) : Rasio dropout untuk probabilitas perhatian.

activation_dropout (`Union[float, int]`, *opsional*, defaultnya `0.1`) : Rasio dropout untuk aktivasi di dalam lapisan fully connected.

num_parallel_samples (`int`, *opsional*, default 100) : Jumlah sampel yang akan dihasilkan secara paralel untuk setiap langkah waktu inferensi.

init_std (`float`, *opsional*, defaultnya `0.02`) : Deviasi standar dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.

use_cache (`bool`, *opsional*, defaultnya `True`) : Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jika `config.is_decoder=True` atau ketika model adalah model generatif yang hanya decoder.

label_length (`int`, *opsional*, default 10) : Panjang token awal dari decoder Autoformer, yang digunakan untuk prediksi multi-langkah langsung (yaitu generasi non-otoregresif).

moving_average (`int`, *opsional*, defaultnya 25) : Ukuran jendela dari rata-rata bergerak. Dalam praktiknya, ini adalah ukuran kernel dalam AvgPool1d dari Lapisan Dekomposisi.

autocorrelation_factor (`int`, *opsional*, default 3) : Faktor "Attention" (yaitu mekanisme AutoCorrelation) yang digunakan untuk menemukan k delay otokorelasi teratas. Disarankan dalam makalah untuk mengaturnya ke angka antara 1 dan 5.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari AutoformerModel. Kelas ini digunakan untuk membuat instans model Autoformer sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari [huggingface/autoformer-tourism-monthly](https://huggingface.co/huggingface/autoformer-tourism-monthly)

Objek konfigurasi mewarisi dari [PreTrainedConfig](/docs/transformers/main/id/main_classes/configuration#transformers.PreTrainedConfig) dan dapat digunakan untuk mengontrol keluaran model. Baca dokumentasi dari [PreTrainedConfig](/docs/transformers/main/id/main_classes/configuration#transformers.PreTrainedConfig) untuk informasi lebih lanjut.

Contoh:

```python
>>> from transformers import AutoformerConfig, AutoformerModel

>>> # Initializing a default Autoformer configuration
>>> configuration = AutoformerConfig()

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

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

## AutoformerModel[[transformers.AutoformerModel]]

#### transformers.AutoformerModel[[transformers.AutoformerModel]]

```python
transformers.AutoformerModel(config: AutoformerConfig)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/autoformer/modeling_autoformer.py#L1013)

**Parameter:**

config ([AutoformerConfig](/docs/transformers/main/id/model_doc/autoformer#transformers.AutoformerConfig)) : Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode [from_pretrained()](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model Autoformer polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka ini untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran input embeddings, memangkas heads, dll.)

Model ini juga merupakan subclass dari [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

#### forward[[transformers.AutoformerModel.forward]]

```python
forward(past_values: Tensor, past_time_features: Tensor, past_observed_mask: Tensor, static_categorical_features: typing.Optional[torch.Tensor] = None, static_real_features: typing.Optional[torch.Tensor] = None, future_values: typing.Optional[torch.Tensor] = None, future_time_features: typing.Optional[torch.Tensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: list[torch.Tensor] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/autoformer/modeling_autoformer.py#L1181)

**Parameter:**

past_values (`torch.Tensor` dengan bentuk `(batch_size, sequence_length)`) : Nilai masa lalu dari deret waktu, yang berfungsi sebagai konteks untuk memprediksi masa depan. Nilai-nilai ini dapat berisi lag, yaitu nilai tambahan dari masa lalu yang ditambahkan untuk berfungsi sebagai "konteks tambahan". `past_values` adalah apa yang diterima encoder Transformer sebagai input (dengan fitur tambahan opsional, seperti `static_categorical_features`, `static_real_features`, `past_time_features`). Panjang urutan di sini sama dengan `context_length` + `max(config.lags_sequence)`. Nilai yang hilang perlu diganti dengan nol.

past_time_features (`torch.Tensor` dengan bentuk `(batch_size, sequence_length, num_features)`, *opsional*) : Fitur waktu opsional, yang secara internal akan ditambahkan oleh model ke `past_values`. Fitur ini bisa berupa hal-hal seperti "bulan dalam setahun", "hari dalam sebulan", dan sebagainya, yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur ini juga bisa berupa fitur "age" (usia), yang pada dasarnya membantu model mengetahui "pada titik mana" sebuah time-series berada. Fitur age memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini. Fitur-fitur ini berfungsi sebagai "positional encodings" dari input. Jadi, berbeda dengan model seperti BERT, di mana position encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur waktu tambahan. Autoformer hanya mempelajari embedding tambahan untuk `static_categorical_features`.

past_observed_mask (`torch.BoolTensor` dengan bentuk `(batch_size, sequence_length)`, *opsional*) : Mask boolean untuk menunjukkan nilai `past_values` mana yang diamati dan mana yang hilang. Nilai mask dipilih dari `[0, 1]`: - 1 untuk nilai yang **diamati**, - 0 untuk nilai yang **hilang** (yaitu NaN yang diganti dengan nol).

static_categorical_features (`torch.LongTensor` dengan bentuk `(batch_size, number of static categorical features)`, *opsional*) : Fitur kategoris statis opsional yang akan dipelajari modelnya sebagai embedding, yang kemudian akan ditambahkan ke nilai dari deret waktu. Fitur kategoris statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu). Contoh tipikal dari fitur kategoris statis adalah ID deret waktu.

static_real_features (`torch.Tensor` dengan bentuk `(batch_size, number of static real features)`, *opsional*) : Fitur real statis opsional yang akan ditambahkan model ke nilai dari deret waktu. Fitur real statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu). Contoh tipikal dari fitur real statis adalah informasi promosi.

future_values (`torch.Tensor` dengan bentuk `(batch_size, prediction_length)`) : Nilai masa depan dari deret waktu, yang berfungsi sebagai label untuk model. `future_values` adalah apa yang perlu dipelajari oleh Transformer untuk dioutputkan, mengingat `past_values`. Lihat notebook demo dan potongan kode untuk detailnya. Nilai yang hilang perlu diganti dengan nol.

future_time_features (`torch.Tensor` dengan bentuk `(batch_size, prediction_length, num_features)`, *opsional*) : Fitur waktu opsional, yang secara internal akan ditambahkan oleh model ke `future_values`. Fitur ini bisa berupa hal-hal seperti "bulan dalam tahun", "hari dalam bulan", dan sebagainya, yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur ini juga bisa berupa fitur "age" (usia), yang pada dasarnya membantu model mengetahui "pada titik mana" sebuah time-series berada. Fitur age memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini. Fitur-fitur ini berfungsi sebagai "positional encodings" dari input. Jadi, berbeda dengan model seperti BERT, di mana position encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur tambahan. Autoformer hanya mempelajari embedding tambahan untuk `static_categorical_features`.

decoder_attention_mask (`torch.LongTensor` dengan bentuk `(batch_size, target_sequence_length)`, *opsional*) : Mask untuk menghindari pelaksanaan perhatian pada indeks token tertentu. Secara default, mask kausal akan digunakan, untuk memastikan model hanya dapat melihat input sebelumnya guna memprediksi masa depan.

encoder_outputs (`tuple(tuple(torch.Tensor)`, *optional*) : Tuple terdiri dari `last_hidden_state`, `hidden_states` (*optional*) dan `attentions` (*optional*) `last_hidden_state` dengan bentuk `(batch_size, sequence_length, hidden_size)` (*optional*) adalah urutan hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention decoder.

past_key_values (`~cache_utils.Cache`, *opsional*) : Hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri dari `past_key_values` yang dikembalikan oleh model pada tahap decoding sebelumnya, ketika `use_cache=True` atau `config.use_cache=True`. Hanya instance [Cache](/docs/transformers/main/id/internal/generation_utils#transformers.Cache) yang diizinkan sebagai input, lihat [panduan kv cache](https://huggingface.co/docs/transformers/en/kv_cache) kami. Jika tidak ada `past_key_values` yang diteruskan, [DynamicCache](/docs/transformers/main/id/internal/generation_utils#transformers.DynamicCache) akan diinisialisasi secara default. Model akan mengoutput format cache yang sama dengan yang diberikan sebagai input. Jika `past_key_values` digunakan, pengguna diharapkan untuk hanya menginput `input_ids` yang belum diproses (yang tidak memiliki state past key value mereka diberikan ke model ini) dengan bentuk `(batch_size, unprocessed_length)` alih-alih semua `input_ids` dengan bentuk `(batch_size, sequence_length)`.

use_cache (`bool`, *opsional*) : Jika diatur ke `True`, state kunci-nilai `past_key_values` akan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihat `past_key_values`).

**Mengembalikan:** `AutoformerModelOutput` atau `tuple(torch.Tensor)`

Sebuah `AutoformerModelOutput` atau tuple dari `torch.Tensor` (jika `return_dict=False` diteruskan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([AutoformerConfig](/docs/transformers/main/id/model_doc/autoformer#transformers.AutoformerConfig)) dan input.

Metode forward dari [AutoformerModel](/docs/transformers/main/id/model_doc/autoformer#transformers.AutoformerModel) menimpa metode khusus `__call__`.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance `Module` setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

- **last_hidden_state** (`torch.Tensor` dengan bentuk `(batch_size, sequence_length, hidden_size)`) -- Urutan hidden-state pada keluaran lapisan terakhir dari decoder model.

  Jika `past_key_values` digunakan, hanya hidden-state terakhir dari sekuens dengan bentuk `(batch_size, 1, hidden_size)` yang dioutput.
- **trend** (`torch.Tensor` dengan bentuk `(batch_size, sequence_length, hidden_size)`) -- Tensor tren untuk setiap deret waktu.
- **past_key_values** (`Cache`, *opsional*, dikembalikan saat `use_cache=True` dilewatkan atau saat `config.use_cache=True`) -- Ini adalah instance [Cache](/docs/transformers/main/id/internal/generation_utils#transformers.Cache). Untuk detail lebih lanjut, lihat [panduan kv cache](https://huggingface.co/docs/transformers/en/kv_cache) kami.

  Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan (lihat input `past_key_values`) untuk mempercepat decoding berurutan.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *opsional*, dikembalikan ketika `output_hidden_states=True` dilewatkan atau ketika `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, sequence_length, hidden_size)`.

  Hidden-states dari decoder pada output setiap layer ditambah output embedding awal.
- **decoder_attentions** (`tuple[torch.Tensor]`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian dari decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
- **cross_attentions** (`tuple[torch.Tensor]`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
- **encoder_last_hidden_state** (`torch.Tensor` dengan bentuk `(batch_size, sequence_length, hidden_size)`, *opsional*) -- Urutan hidden-states pada keluaran lapisan terakhir dari encoder model.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *opsional*, dikembalikan ketika `output_hidden_states=True` dilewatkan atau ketika `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, sequence_length, hidden_size)`.

  Hidden-states dari encoder pada output setiap layer ditambah output embedding awal.
- **encoder_attentions** (`tuple[torch.Tensor]`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian dari encoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
- **loc** (`torch.Tensor` dengan bentuk `(batch_size,)` atau `(batch_size, input_size)`, *opsional*) -- Menggeser nilai dari jendela konteks setiap deret waktu, yang digunakan untuk memberikan input model dengan magnitudo yang sama, kemudian digunakan untuk menggeser kembali ke magnitudo asli.
- **scale** (`torch.Tensor` dengan bentuk `(batch_size,)` atau `(batch_size, input_size)`, *opsional*) -- Nilai penskalaan untuk jendela konteks dari setiap deret waktu, yang digunakan untuk memberikan input dengan magnitudo yang sama ke model, kemudian digunakan untuk menskalakan kembali ke magnitudo asli. static_features: (`torch.Tensor` dengan bentuk `(batch_size, feature size)`, *opsional*): Fitur statis dari setiap deret waktu dalam batch, yang disalin ke kovariat pada saat inferensi.
- **static_features** (`torch.Tensor` dengan bentuk `(batch_size, feature size)`, *opsional*) -- Fitur statis dari setiap deret waktu dalam batch yang disalin ke kovariat pada saat inferensi.

Contoh:

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

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

>>> model = AutoformerModel.from_pretrained("huggingface/autoformer-tourism-monthly")

>>> # during training, one provides both past and future values
>>> # as well as possible additional features
>>> outputs = model(
...     past_values=batch["past_values"],
...     past_time_features=batch["past_time_features"],
...     past_observed_mask=batch["past_observed_mask"],
...     static_categorical_features=batch["static_categorical_features"],
...     future_values=batch["future_values"],
...     future_time_features=batch["future_time_features"],
... )

>>> last_hidden_state = outputs.last_hidden_state
```

## AutoformerForPrediction[[transformers.AutoformerForPrediction]]

#### transformers.AutoformerForPrediction[[transformers.AutoformerForPrediction]]

```python
transformers.AutoformerForPrediction(config: AutoformerConfig)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/autoformer/modeling_autoformer.py#L1379)

**Parameter:**

config ([AutoformerConfig](/docs/transformers/main/id/model_doc/autoformer#transformers.AutoformerConfig)) : Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode [from_pretrained()](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model Autoformer dengan kepala distribusi di bagian atas untuk peramalan deret waktu.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka ini untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran input embeddings, memangkas heads, dll.)

Model ini juga merupakan subclass dari [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

#### forward[[transformers.AutoformerForPrediction.forward]]

```python
forward(past_values: Tensor, past_time_features: Tensor, past_observed_mask: Tensor, static_categorical_features: typing.Optional[torch.Tensor] = None, static_real_features: typing.Optional[torch.Tensor] = None, future_values: typing.Optional[torch.Tensor] = None, future_time_features: typing.Optional[torch.Tensor] = None, future_observed_mask: typing.Optional[torch.Tensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: list[torch.Tensor] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/autoformer/modeling_autoformer.py#L1413)

**Parameter:**

past_values (`torch.Tensor` dengan bentuk `(batch_size, sequence_length)`) : Nilai masa lalu dari deret waktu, yang berfungsi sebagai konteks untuk memprediksi masa depan. Nilai-nilai ini dapat berisi lag, yaitu nilai tambahan dari masa lalu yang ditambahkan untuk berfungsi sebagai "konteks tambahan". `past_values` adalah apa yang diterima encoder Transformer sebagai input (dengan fitur tambahan opsional, seperti `static_categorical_features`, `static_real_features`, `past_time_features`). Panjang urutan di sini sama dengan `context_length` + `max(config.lags_sequence)`. Nilai yang hilang perlu diganti dengan nol.

past_time_features (`torch.Tensor` dengan bentuk `(batch_size, sequence_length, num_features)`, *opsional*) : Fitur waktu opsional, yang secara internal akan ditambahkan oleh model ke `past_values`. Fitur ini bisa berupa hal-hal seperti "bulan dalam setahun", "hari dalam sebulan", dan sebagainya, yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur ini juga bisa berupa fitur "age" (usia), yang pada dasarnya membantu model mengetahui "pada titik mana" sebuah time-series berada. Fitur age memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini. Fitur-fitur ini berfungsi sebagai "positional encodings" dari input. Jadi, berbeda dengan model seperti BERT, di mana position encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur waktu tambahan. Autoformer hanya mempelajari embedding tambahan untuk `static_categorical_features`.

past_observed_mask (`torch.BoolTensor` dengan bentuk `(batch_size, sequence_length)`, *opsional*) : Mask boolean untuk menunjukkan nilai `past_values` mana yang diamati dan mana yang hilang. Nilai mask dipilih dari `[0, 1]`: - 1 untuk nilai yang **diamati**, - 0 untuk nilai yang **hilang** (yaitu NaN yang diganti dengan nol).

static_categorical_features (`torch.LongTensor` dengan bentuk `(batch_size, number of static categorical features)`, *opsional*) : Fitur kategoris statis opsional yang akan dipelajari modelnya sebagai embedding, yang kemudian akan ditambahkan ke nilai dari deret waktu. Fitur kategoris statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu). Contoh tipikal dari fitur kategoris statis adalah ID deret waktu.

static_real_features (`torch.Tensor` dengan bentuk `(batch_size, number of static real features)`, *opsional*) : Fitur real statis opsional yang akan ditambahkan model ke nilai dari deret waktu. Fitur real statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu). Contoh tipikal dari fitur real statis adalah informasi promosi.

future_values (`torch.Tensor` dengan bentuk `(batch_size, prediction_length)`) : Nilai masa depan dari deret waktu, yang berfungsi sebagai label untuk model. `future_values` adalah apa yang perlu dipelajari oleh Transformer untuk dioutputkan, mengingat `past_values`. Lihat notebook demo dan potongan kode untuk detailnya. Nilai yang hilang perlu diganti dengan nol.

future_time_features (`torch.Tensor` dengan bentuk `(batch_size, prediction_length, num_features)`, *opsional*) : Fitur waktu opsional, yang secara internal akan ditambahkan oleh model ke `future_values`. Fitur ini bisa berupa hal-hal seperti "bulan dalam tahun", "hari dalam bulan", dan sebagainya, yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur ini juga bisa berupa fitur "age" (usia), yang pada dasarnya membantu model mengetahui "pada titik mana" sebuah time-series berada. Fitur age memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini. Fitur-fitur ini berfungsi sebagai "positional encodings" dari input. Jadi, berbeda dengan model seperti BERT, di mana position encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur tambahan. Autoformer hanya mempelajari embedding tambahan untuk `static_categorical_features`.

future_observed_mask (`torch.BoolTensor` dengan bentuk `(batch_size, sequence_length)` atau `(batch_size, sequence_length, input_size)`, *opsional*) : Mask boolean untuk menunjukkan nilai `future_values` mana yang diamati dan mana yang hilang. Nilai mask dipilih dari `[0, 1]`: - 1 untuk nilai yang **diamati**, - 0 untuk nilai yang **hilang** (yaitu NaN yang diganti dengan nol). Mask ini digunakan untuk menyaring nilai yang hilang untuk perhitungan loss akhir.

decoder_attention_mask (`torch.LongTensor` dengan bentuk `(batch_size, target_sequence_length)`, *opsional*) : Mask untuk menghindari pelaksanaan perhatian pada indeks token tertentu. Secara default, mask kausal akan digunakan, untuk memastikan model hanya dapat melihat input sebelumnya guna memprediksi masa depan.

encoder_outputs (`tuple(tuple(torch.Tensor)`, *optional*) : Tuple terdiri dari `last_hidden_state`, `hidden_states` (*optional*) dan `attentions` (*optional*) `last_hidden_state` dengan bentuk `(batch_size, sequence_length, hidden_size)` (*optional*) adalah urutan hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention decoder.

past_key_values (`~cache_utils.Cache`, *opsional*) : Hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri dari `past_key_values` yang dikembalikan oleh model pada tahap decoding sebelumnya, ketika `use_cache=True` atau `config.use_cache=True`. Hanya instance [Cache](/docs/transformers/main/id/internal/generation_utils#transformers.Cache) yang diizinkan sebagai input, lihat [panduan kv cache](https://huggingface.co/docs/transformers/en/kv_cache) kami. Jika tidak ada `past_key_values` yang diteruskan, [DynamicCache](/docs/transformers/main/id/internal/generation_utils#transformers.DynamicCache) akan diinisialisasi secara default. Model akan mengoutput format cache yang sama dengan yang diberikan sebagai input. Jika `past_key_values` digunakan, pengguna diharapkan untuk hanya menginput `input_ids` yang belum diproses (yang tidak memiliki state past key value mereka diberikan ke model ini) dengan bentuk `(batch_size, unprocessed_length)` alih-alih semua `input_ids` dengan bentuk `(batch_size, sequence_length)`.

use_cache (`bool`, *opsional*) : Jika diatur ke `True`, state kunci-nilai `past_key_values` akan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihat `past_key_values`).

**Mengembalikan:** [Seq2SeqTSPredictionOutput](/docs/transformers/main/id/main_classes/output#transformers.modeling_outputs.Seq2SeqTSPredictionOutput) atau `tuple(torch.Tensor)`

[Seq2SeqTSPredictionOutput](/docs/transformers/main/id/main_classes/output#transformers.modeling_outputs.Seq2SeqTSPredictionOutput) atau tuple dari `torch.Tensor` (jika `return_dict=False` diteruskan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([AutoformerConfig](/docs/transformers/main/id/model_doc/autoformer#transformers.AutoformerConfig)) dan input.

Metode forward dari [AutoformerForPrediction](/docs/transformers/main/id/model_doc/autoformer#transformers.AutoformerForPrediction) menimpa metode khusus `__call__`.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance `Module` setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

- **loss** (`torch.Tensor` dengan bentuk `(1,)`, *opsional*, dikembalikan ketika `future_values` disediakan) -- Loss distribusi.
- **params** (`torch.Tensor` dengan bentuk `(batch_size, num_samples, num_params)`) -- Parameter dari distribusi yang dipilih.
- **past_key_values** (`EncoderDecoderCache`, *opsional*, dikembalikan ketika `use_cache=True` diteruskan atau ketika `config.use_cache=True`) -- Ini adalah instance [EncoderDecoderCache](/docs/transformers/main/id/internal/generation_utils#transformers.EncoderDecoderCache). Untuk detail lebih lanjut, lihat [panduan kv cache](https://huggingface.co/docs/transformers/en/kv_cache) kami.

  Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan (lihat input `past_key_values`) untuk mempercepat decoding berurutan.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *opsional*, dikembalikan saat `output_hidden_states=True` dilewatkan atau saat `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, sequence_length, hidden_size)`.

  Hidden-states dari decoder pada output setiap layer ditambah output embedding awal.
- **decoder_attentions** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_attentions=True` diteruskan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian dari decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
- **cross_attentions** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
- **encoder_last_hidden_state** (`torch.Tensor` dengan bentuk `(batch_size, sequence_length, hidden_size)`, *opsional*) -- Urutan hidden-states pada keluaran lapisan terakhir dari encoder model.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_hidden_states=True` diteruskan atau ketika `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, sequence_length, hidden_size)`.

  Hidden-states dari encoder pada output setiap layer ditambah output embedding awal.
- **encoder_attentions** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`.

  Bobot perhatian dari encoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
- **loc** (`torch.Tensor` dengan bentuk `(batch_size,)` atau `(batch_size, input_size)`, *opsional*) -- Menggeser nilai dari jendela konteks setiap deret waktu, yang digunakan untuk memberikan input model dengan magnitudo yang sama, kemudian digunakan untuk menggeser kembali ke magnitudo asli.
- **scale** (`torch.Tensor` dengan bentuk `(batch_size,)` atau `(batch_size, input_size)`, *opsional*) -- Nilai penskalaan untuk jendela konteks dari setiap deret waktu, yang digunakan untuk memberikan input dengan magnitudo yang sama ke model dan kemudian digunakan untuk menskalakan kembali ke magnitudo asli.
- **static_features** (`torch.Tensor` dengan bentuk `(batch_size, feature size)`, *opsional*) -- Fitur statis dari setiap deret waktu dalam batch yang disalin ke kovariat pada saat inferensi.

Contoh:

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

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

>>> model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-tourism-monthly")

>>> # during training, one provides both past and future values
>>> # as well as possible additional features
>>> outputs = model(
...     past_values=batch["past_values"],
...     past_time_features=batch["past_time_features"],
...     past_observed_mask=batch["past_observed_mask"],
...     static_categorical_features=batch["static_categorical_features"],
...     future_values=batch["future_values"],
...     future_time_features=batch["future_time_features"],
... )

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

>>> # during inference, one only provides past values
>>> # as well as possible additional features
>>> # the model autoregressively generates future values
>>> outputs = model.generate(
...     past_values=batch["past_values"],
...     past_time_features=batch["past_time_features"],
...     past_observed_mask=batch["past_observed_mask"],
...     static_categorical_features=batch["static_categorical_features"],
...     future_time_features=batch["future_time_features"],
... )

>>> mean_prediction = outputs.sequences.mean(dim=1)
```

AutoformerForPrediction juga dapat menggunakan static_real_features. Untuk melakukannya, atur num_static_real_features di AutoformerConfig berdasarkan jumlah fitur tersebut dalam dataset (dalam kasus dataset tourism_monthly itu

sama dengan 1), inisialisasi model dan panggil seperti yang ditunjukkan di bawah:

```
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import AutoformerConfig, AutoformerForPrediction

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

>>> # check number of static real features
>>> num_static_real_features = batch["static_real_features"].shape[-1]

>>> # load configuration of pretrained model and override num_static_real_features
>>> configuration = AutoformerConfig.from_pretrained(
...     "huggingface/autoformer-tourism-monthly",
...     num_static_real_features=num_static_real_features,
... )
>>> # we also need to update feature_size as it is not recalculated
>>> configuration.feature_size += num_static_real_features

>>> model = AutoformerForPrediction(configuration)

>>> outputs = model(
...     past_values=batch["past_values"],
...     past_time_features=batch["past_time_features"],
...     past_observed_mask=batch["past_observed_mask"],
...     static_categorical_features=batch["static_categorical_features"],
...     static_real_features=batch["static_real_features"],
...     future_values=batch["future_values"],
...     future_time_features=batch["future_time_features"],
... )
```

