# Autoformer

## Genel Bakış

Autoformer modeli, Haixu Wu, Jiehui Xu, Jianmin Wang ve Mingsheng Long tarafından [Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting](https://huggingface.co/papers/2106.13008) makalesinde önerilmiştir.

Bu model, Transformer'ı, tahmin süreci sırasında trend ve mevsimsel bileşenleri kademeli olarak ayrıştırabilen derin bir ayrıştırma mimarisi olarak genişletir.

Makalenin özeti aşağıdaki gibidir:

*Tahmin süresinin uzatılması, aşırı hava erken uyarısı ve uzun vadeli enerji tüketimi planlaması gibi gerçek dünya uygulamaları için kritik bir gerekliliktir. Bu makale, zaman serilerinin uzun vadeli tahmin sorununu ele alır. Önceki Transformer tabanlı modeller, uzun menzilli bağımlılıkları keşfetmek için çeşitli öz-dikkat (self-attention) mekanizmaları benimsemiştir. Ancak, uzun vadeli geleceğin karmaşık zaman örüntüleri, modelin güvenilir bağımlılıkları bulmasını engeller. Ayrıca, Transformer'lar uzun seriler için verimlilik sağlamak üzere nokta bazlı öz-dikkatlerin seyreltilmiş (sparse) versiyonlarını benimsemek zorunda kalır; bu durum bilgi kullanımında bir darboğaza yol açar. Transformer'ların ötesine geçerek, Auto-Correlation mekanizmasına sahip yeni bir ayrıştırma (decomposition) mimarisi olan Autoformer'ı tasarladık. Serilerin ayrıştırılmasına yönelik ön işleme geleneğinden koptuk ve bunu derin modellerin temel iç bloğu olarak yeniledik. Bu tasarım, Autoformer'a karmaşık zaman serileri için kademeli ayrıştırma yetenekleri kazandırır. Ayrıca, stokastik süreç teorisinden ilham alarak, Auto-Correlation mekanizmasını serilerin periyodikliğine dayalı olarak tasarladık; bu mekanizma bağımlılık keşfini ve temsil birleştirmeyi alt seri (sub-series) düzeyinde gerçekleştirir. Auto-Correlation, hem verimlilik hem de doğruluk açısından öz-dikkatten üstündür. Uzun vadeli tahminlerde Autoformer, enerji, trafik, ekonomi, hava ve hastalık olmak üzere beş pratik uygulamayı kapsayan altı benchmark üzerinde %38'lik bir göreli iyileşmeyle en iyi (state-of-the-art) doğruluğu elde eder.*

Bu model [elisim](https://huggingface.co/elisim) ve [kashif](https://huggingface.co/kashif) tarafından katkıda bulunmuştur. Orijinal kod [burada](https://github.com/thuml/Autoformer) bulunabilir.

## Kaynaklar

Başlamanıza yardımcı olmak için resmi Hugging Face ve topluluk (🌎 ile belirtilen) kaynaklarının listesi. Burada yer alacak bir kaynak göndermekle ilgileniyorsanız, bir Pull Request açmaktan çekinmeyin; inceleyeceğiz! Kaynağın, mevcut bir kaynağı tekrarlamak yerine ideal olarak yeni bir şey göstermesi beklenir.

- HuggingFace blog'daki Autoformer blog yazısına göz atın: [Evet, Transformers Zaman Serisi Tahmini için Etkilidir (+ 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)
```

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

**Parametreler:**

is_encoder_decoder (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı.

prediction_length (`int`, *isteğe bağlı*) : Dekoder için tahmin uzunluğu. Başka bir deyişle, modelin tahmin ufku.

context_length (`int`, *isteğe bağlı*, varsayılan `prediction_length`) : Kodlayıcı için bağlam uzunluğu. Ayarlanmazsa, bağlam uzunluğu `prediction_length` ile aynı olacaktır.

distribution_output (`string`, *isteğe bağlı*, varsayılan `"student_t"`) : Modelin dağılım emisyon başlığı. "student_t", "normal" veya "negative_binomial" olabilir.

loss (`string`, *isteğe bağlı*, varsayılan `"nll"`) : `distribution_output` başlığına karşılık gelen modelin kayıp fonksiyonu. Parametrik dağılımlar için negatif log olma olasılığıdır (nll) - şu anda desteklenen tek seçenek budur.

input_size (`int`, *opsiyonel*, varsayılan 1) : Varsayılan olarak tek değişkenli hedefler için 1 olan hedef değişkeninin boyutu. Çok değişkenli hedefler durumunda > 1 olur.

lags_sequence (`list[int]`, *isteğe bağlı*, varsayılan `[1, 2, 3, 4, 5, 6, 7]`) : Genellikle frekans tarafından belirlenen, kovaryat olarak kullanılan girdi zaman serisinin gecikmeleri. Varsayılan değer `[1, 2, 3, 4, 5, 6, 7]`'dir.

scaling (`bool`, *isteğe bağlı*, varsayılan `True`) : Girdi hedeflerinin ölçeklenip ölçeklenmeyeceğini belirtir.

num_time_features (`int`, *isteğe bağlı*, varsayılan 0) : Girdi zaman serisindeki zaman özelliklerinin sayısı.

num_dynamic_real_features (`int`, *isteğe bağlı*, varsayılan 0) : Dinamik gerçek değerli özelliklerin sayısı.

num_static_categorical_features (`int`, *isteğe bağlı*, varsayılan 0) : Statik kategorik özelliklerin sayısı.

num_static_real_features (`int`, *isteğe bağlı*, varsayılan 0) : Statik gerçek değerli özelliklerin sayısı.

cardinality (`list[int]`, *isteğe bağlı*) : Her bir statik kategorik özellik için kardinalite (farklı değer sayısı). `num_static_categorical_features` ile aynı uzunlukta, tamsayılardan oluşan bir liste olmalıdır. `num_static_categorical_features` > 0 ise `None` olamaz.

embedding_dimension (`list[int]`, *isteğe bağlı*) : Gömme ve gizli durumların boyutluluğu.

d_model (`int`, *isteğe bağlı*, varsayılan `64`) : Kodlayıcı katmanlarının ve havuzlayıcı katmanının boyutu.

encoder_attention_heads (`int`, *isteğe bağlı*, varsayılan `2`) : Transformer kodlayıcısındaki her dikkat katmanı için dikkat başı sayısı.

decoder_attention_heads (`int`, *isteğe bağlı*, varsayılan `2`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

encoder_layers (`int`, *isteğe bağlı*, varsayılan `2`) : Transformer kodlayıcısındaki gizli katman sayısı. Ayarlanmazsa `num_layers` ile aynı değeri kullanır.

decoder_layers (`int`, *isteğe bağlı*, varsayılan `2`) : Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsa `num_layers` ile aynı değer kullanılır.

encoder_ffn_dim (`int`, *opsiyonel*, varsayılan `32`) : Kodlayıcıdaki "ara" (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu.

decoder_ffn_dim (`int`, *opsiyonel*, varsayılan `32`) : Dekoderdeki "ara" (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu.

activation_function (`str`, *isteğe bağlı*, varsayılan `gelu`) : Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.1`) : Tüm dropout katmanları için oran.

encoder_layerdrop (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.1`) : Kodlayıcı için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](see https://huggingface.co/papers/1909.11556) bakın.

decoder_layerdrop (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.1`) : Çözücü için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](see https://huggingface.co/papers/1909.11556) bakın.

attention_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.1`) : Dikkat olasılıkları için dropout oranı.

activation_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.1`) : Tamamen bağlı katmandaki aktivasyonlar için dropout oranı.

num_parallel_samples (`int`, *isteğe bağlı*, varsayılan 100) : Çıkarımın her zaman adımı için paralel olarak üretilecek örnek sayısı.

init_std (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

use_cache (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin son anahtar/değer dikkatlerini döndürüp döndürmeyeceğini belirtir (tüm modellerde kullanılmaz). Yalnızca `config.is_decoder=True` olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.

label_length (`int`, *opsiyonel*, varsayılan 10) : Doğrudan çok adımlı tahmin (yani otoregresif olmayan üretim) için kullanılan Autoformer çözücüsünün başlangıç token uzunluğu.

moving_average (`int`, *opsiyonel*, varsayılan 25) : Hareketli ortalamanın pencere boyutu. Uygulamada, Decomposition Layer'deki AvgPool1d'nin çekirdek boyutudur.

autocorrelation_factor (`int`, *opsiyonel*, varsayılan 3) : "Attention" (yani AutoCorrelation mekanizması) faktörü, üst k otokorelasyon gecikmelerini bulmak için kullanılır. Makalede, bunun 1 ile 5 arasında bir sayı olarak ayarlanması önerilmektedir.

Bu, bir AutoformerModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Autoformer modelinin örneklenmesi ve model mimarisinin tanımlanması için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, [huggingface/autoformer-tourism-monthly](https://huggingface.co/huggingface/autoformer-tourism-monthly) ile benzer bir yapılandırmaya yol açar.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:

```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)
```

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

**Parametreler:**

config ([AutoformerConfig](/docs/transformers/main/tr/model_doc/autoformer#transformers.AutoformerConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Üzerinde herhangi bir özel başlık olmadan ham gizli durumları (hidden-states) üreten çıplak Autoformer Model.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### 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'>)
```

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

**Parametreler:**

past_values (`torch.Tensor`, şekli `(batch_size, sequence_length)`) : Geleceği tahmin etmek için bağlam olarak hizmet veren zaman serisinin geçmiş değerleri. Bu değerler, gecikmeleri (lags) içerebilir; yani "ek bağlam" olarak hizmet etmek amacıyla eklenen geçmişten ek değerler. `past_values`, Transformer kodlayıcısının girdisi olarak aldığı şeydir (isteğe bağlı ek özellikler, örneğin `static_categorical_features`, `static_real_features`, `past_time_features` ile birlikte). Buradaki dizi uzunluğu `context_length` + `max(config.lags_sequence)`'ye eşittir. Eksik değerler sıfırlarla değiştirilmelidir.

past_time_features (`torch.Tensor`, şekli `(batch_size, sequence_length, num_features)`, *isteğe bağlı*) : Modelin `past_values` içine dahili olarak ekleyeceği isteğe bağlı zaman özellikleri. Bunlar, "yılın ayı", "ayın günü" gibi, vektörler olarak kodlanmış (örneğin Fourier özellikleri olarak) öğeler olabilir. Bunlar, zaman serisinin "hayatının hangi noktasında" olduğunu modelin bilmesine yardımcı olan, temelde "yaş" özellikleri de olabilir. Yaş özellikleri, uzak geçmiş zaman adımları için küçük değerlere sahiptir ve mevcut zaman adımına yaklaştıkça monoton olarak artar. Bu özellikler, girdilerin "konumsal kodlamaları" görevini görür. Dolayısıyla, konumsal kodlamaların model parametreleri olarak sıfırdan öğrenildiği BERT gibi bir modelin aksine, Time Series Transformer ek zaman özelliklerinin sağlanmasını gerektirir. Autoformer yalnızca `static_categorical_features` için ek gömme (embedding) öğrenir.

past_observed_mask (`torch.BoolTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Hangi `past_values`'lerin gözlemlendiğini ve hangilerinin eksik olduğunu belirtmek için mantıksal maske. `[0, 1]` aralığında seçilen maske değerleri: - **gözlemlenen** değerler için 1, - **eksik** değerler için 0 (yani sıfırlarla değiştirilen NaN'lar).

static_categorical_features (`torch.LongTensor`, şekli `(batch_size, number of static categorical features)`, *isteğe bağlı*) : Modelin bir gömme (embedding) öğreneceği ve zaman serisinin değerlerine ekleyeceği isteğe bağlı statik kategorik özellikler. Statik kategorik özellikler, tüm zaman adımları için aynı değere sahip olan (zamana göre statik) özelliklerdir. Statik kategorik bir özelliğin tipik bir örneği, bir zaman serisi kimliğidir.

static_real_features (`torch.Tensor`, şekli `(batch_size, number of static real features)`, *isteğe bağlı*) : Modelin zaman serisi değerlerine ekleyeceği isteğe bağlı statik gerçek özellikler. Statik gerçek özellikler, tüm zaman adımları için aynı değere sahip olan (zamana göre statik) özelliklerdir. Statik bir gerçek özelliğin tipik bir örneği, promosyon bilgisidir.

future_values (`torch.Tensor`, şekli `(batch_size, prediction_length)`) : Zaman serisinin gelecekteki değerleri, model için etiket görevi görür. `future_values`, Transformer'ın `past_values` verildiğinde öğrenip çıkarması gereken şeydir. Ayrıntılar için demo defterine ve kod parçacıklarına bakın. Eksik değerler sıfırlarla değiştirilmelidir.

future_time_features (`torch.Tensor`, şekli `(batch_size, prediction_length, num_features)`, *isteğe bağlı*) : Modelin içsel olarak `future_values` içine ekleyeceği isteğe bağlı zaman özellikleri. Bunlar, "yılın ayı", "ayın günü" gibi, vektörler olarak kodlanmış (örneğin Fourier özellikleri olarak) öğeler olabilir. Bunlar, zaman serisinin "yaşamının hangi noktasında" olduğunu modelin bilmesine yardımcı olan, temelde "yaş" özellikleri de olabilir. Yaş özellikleri, uzak geçmiş zaman adımları için küçük değerlere sahiptir ve mevcut zaman adımına yaklaştıkça monoton olarak artar. Bu özellikler, girdilerin "konumsal kodlamaları" görevini görür. Dolayısıyla, konumsal kodlamaların model parametreleri olarak sıfırdan öğrenildiği BERT gibi bir modelin aksine, Time Series Transformer ek özelliklerin sağlanmasını gerektirir. Autoformer yalnızca `static_categorical_features` için ek gömme (embedding) öğrenir.

decoder_attention_mask (`torch.LongTensor`, şekli `(batch_size, target_sequence_length)`, *isteğe bağlı*) : Belirli token indekslerinde dikkat işleminin uygulanmaması için maske. Varsayılan olarak, modelin geleceği tahmin ederken yalnızca önceki girdilere bakabilmesini sağlamak için nedensel bir maske kullanılır.

encoder_outputs (`tuple(tuple(torch.Tensor)`, *optional*) : Tuple, `last_hidden_state`, `hidden_states` (*optional*) ve `attentions` (*optional*) bileşenlerinden oluşur. `last_hidden_state`, `(batch_size, sequence_length, hidden_size)` boyutunda (*optional*) ve kodlayıcının (encoder) son katmanının çıktısındaki gizli durumların (hidden-states) bir dizisidir. Çözücüde (decoder) çapraz dikkat (cross-attention) için kullanılır.

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

**Dönüş:** `AutoformerModelOutput` veya `tuple(torch.Tensor)`

Bir `AutoformerModelOutput` veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda), yapılandırmaya ([AutoformerConfig](/docs/transformers/main/tr/model_doc/autoformer#transformers.AutoformerConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[AutoformerModel](/docs/transformers/main/tr/model_doc/autoformer#transformers.AutoformerModel) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`) -- Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.

  `past_key_values` kullanılırsa, yalnızca `(batch_size, 1, hidden_size)` biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.
- **trend** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`) -- Her zaman serisi için trend tensörü.
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.
- **decoder_attentions** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan çözücü (decoder) dikkat ağırlıkları.
- **cross_attentions** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
- **encoder_last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.
- **encoder_attentions** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.
- **loc** (`torch.Tensor`, şekli `(batch_size,)` veya `(batch_size, input_size)`, *isteğe bağlı*) -- Modelin aynı büyüklükte girdiler almasını sağlamak için her zaman serisinin bağlam penceresindeki değerleri kaydıran ve ardından orijinal büyüklüğe geri kaydırmak için kullanılan değer.
- **scale** (`torch.Tensor`, şekli `(batch_size,)` veya `(batch_size, input_size)`, *isteğe bağlı*) -- Her zaman serisinin bağlam penceresinin ölçekleme değerleri; modele aynı büyüklükte girdiler vermek için kullanılır ve ardından orijinal büyüklüğe geri ölçeklenir. static_features: (`torch.Tensor`, şekli `(batch_size, feature size)`, *isteğe bağlı*): Bir batch içindeki her zaman serisinin statik özellikleri; çıkarım sırasında kovaryatlara kopyalanır.
- **static_features** (`torch.Tensor`, şekli `(batch_size, feature size)`, *isteğe bağlı*) -- Bir batch içindeki her zaman serisinin, çıkarım sırasında kovaryatlara kopyalanan statik özellikleri.

Örnekler:

```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)
```

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

**Parametreler:**

config ([AutoformerConfig](/docs/transformers/main/tr/model_doc/autoformer#transformers.AutoformerConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Zaman serisi tahmini için üstünde bir dağılım başlığı bulunan Autoformer Modeli.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### 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'>)
```

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

**Parametreler:**

past_values (`torch.Tensor`, şekli `(batch_size, sequence_length)`) : Geleceği tahmin etmek için bağlam olarak hizmet veren zaman serisinin geçmiş değerleri. Bu değerler, gecikmeleri (lags) içerebilir; yani "ek bağlam" olarak hizmet etmek amacıyla eklenen geçmişten ek değerler. `past_values`, Transformer kodlayıcısının girdisi olarak aldığı şeydir (isteğe bağlı ek özellikler, örneğin `static_categorical_features`, `static_real_features`, `past_time_features` ile birlikte). Buradaki dizi uzunluğu `context_length` + `max(config.lags_sequence)`'ye eşittir. Eksik değerler sıfırlarla değiştirilmelidir.

past_time_features (`torch.Tensor`, şekli `(batch_size, sequence_length, num_features)`, *isteğe bağlı*) : Modelin `past_values` içine dahili olarak ekleyeceği isteğe bağlı zaman özellikleri. Bunlar, "yılın ayı", "ayın günü" gibi, vektörler olarak kodlanmış (örneğin Fourier özellikleri olarak) öğeler olabilir. Bunlar, zaman serisinin "hayatının hangi noktasında" olduğunu modelin bilmesine yardımcı olan, temelde "yaş" özellikleri de olabilir. Yaş özellikleri, uzak geçmiş zaman adımları için küçük değerlere sahiptir ve mevcut zaman adımına yaklaştıkça monoton olarak artar. Bu özellikler, girdilerin "konumsal kodlamaları" görevini görür. Dolayısıyla, konumsal kodlamaların model parametreleri olarak sıfırdan öğrenildiği BERT gibi bir modelin aksine, Time Series Transformer ek zaman özelliklerinin sağlanmasını gerektirir. Autoformer yalnızca `static_categorical_features` için ek gömme (embedding) öğrenir.

past_observed_mask (`torch.BoolTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Hangi `past_values`'lerin gözlemlendiğini ve hangilerinin eksik olduğunu belirtmek için mantıksal maske. `[0, 1]` aralığında seçilen maske değerleri: - **gözlemlenen** değerler için 1, - **eksik** değerler için 0 (yani sıfırlarla değiştirilen NaN'lar).

static_categorical_features (`torch.LongTensor`, şekli `(batch_size, number of static categorical features)`, *isteğe bağlı*) : Modelin bir gömme (embedding) öğreneceği ve zaman serisinin değerlerine ekleyeceği isteğe bağlı statik kategorik özellikler. Statik kategorik özellikler, tüm zaman adımları için aynı değere sahip olan (zamana göre statik) özelliklerdir. Statik kategorik bir özelliğin tipik bir örneği, bir zaman serisi kimliğidir.

static_real_features (`torch.Tensor`, şekli `(batch_size, number of static real features)`, *isteğe bağlı*) : Modelin zaman serisi değerlerine ekleyeceği isteğe bağlı statik gerçek özellikler. Statik gerçek özellikler, tüm zaman adımları için aynı değere sahip olan (zamana göre statik) özelliklerdir. Statik bir gerçek özelliğin tipik bir örneği, promosyon bilgisidir.

future_values (`torch.Tensor`, şekli `(batch_size, prediction_length)`) : Zaman serisinin gelecekteki değerleri, model için etiket görevi görür. `future_values`, Transformer'ın `past_values` verildiğinde öğrenip çıkarması gereken şeydir. Ayrıntılar için demo defterine ve kod parçacıklarına bakın. Eksik değerler sıfırlarla değiştirilmelidir.

future_time_features (`torch.Tensor`, şekli `(batch_size, prediction_length, num_features)`, *isteğe bağlı*) : Modelin içsel olarak `future_values` içine ekleyeceği isteğe bağlı zaman özellikleri. Bunlar, "yılın ayı", "ayın günü" gibi, vektörler olarak kodlanmış (örneğin Fourier özellikleri olarak) öğeler olabilir. Bunlar, zaman serisinin "yaşamının hangi noktasında" olduğunu modelin bilmesine yardımcı olan, temelde "yaş" özellikleri de olabilir. Yaş özellikleri, uzak geçmiş zaman adımları için küçük değerlere sahiptir ve mevcut zaman adımına yaklaştıkça monoton olarak artar. Bu özellikler, girdilerin "konumsal kodlamaları" görevini görür. Dolayısıyla, konumsal kodlamaların model parametreleri olarak sıfırdan öğrenildiği BERT gibi bir modelin aksine, Time Series Transformer ek özelliklerin sağlanmasını gerektirir. Autoformer yalnızca `static_categorical_features` için ek gömme (embedding) öğrenir.

future_observed_mask (`torch.BoolTensor`, şekli `(batch_size, sequence_length)` veya `(batch_size, sequence_length, input_size)`, *isteğe bağlı*) : Hangi `future_values`'in gözlemlendiğini ve hangilerinin eksik olduğunu belirtmek için mantıksal maske. `[0, 1]` aralığında seçilen maske değerleri:  - **gözlemlenen** değerler için 1, - **eksik** değerler için 0 (yani sıfırlarla değiştirilen NaN'lar).  Bu maske, nihai kayıp hesabı için eksik değerleri elemek üzere kullanılır.

decoder_attention_mask (`torch.LongTensor`, şekli `(batch_size, target_sequence_length)`, *isteğe bağlı*) : Belirli token indekslerinde dikkat işleminin uygulanmaması için maske. Varsayılan olarak, modelin geleceği tahmin ederken yalnızca önceki girdilere bakabilmesini sağlamak için nedensel bir maske kullanılır.

encoder_outputs (`tuple(tuple(torch.Tensor)`, *optional*) : Tuple, `last_hidden_state`, `hidden_states` (*optional*) ve `attentions` (*optional*) bileşenlerinden oluşur. `last_hidden_state`, `(batch_size, sequence_length, hidden_size)` boyutunda (*optional*) ve kodlayıcının (encoder) son katmanının çıktısındaki gizli durumların (hidden-states) bir dizisidir. Çözücüde (decoder) çapraz dikkat (cross-attention) için kullanılır.

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

**Dönüş:** [Seq2SeqTSPredictionOutput](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.Seq2SeqTSPredictionOutput) veya `tuple(torch.Tensor)`

[Seq2SeqTSPredictionOutput](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.Seq2SeqTSPredictionOutput) veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırma ([AutoformerConfig](/docs/transformers/main/tr/model_doc/autoformer#transformers.AutoformerConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[AutoformerForPrediction](/docs/transformers/main/tr/model_doc/autoformer#transformers.AutoformerForPrediction) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `future_values` sağlandığında döndürülür) -- Dağılımsal kayıp.
- **params** (`torch.Tensor`, şekli `(batch_size, num_samples, num_params)`) -- Seçilen dağılımın parametreleri.
- **past_key_values** (`EncoderDecoderCache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [EncoderDecoderCache](/docs/transformers/main/tr/internal/generation_utils#transformers.EncoderDecoderCache) örneğidir. Daha fazla ayrıntı için [kv önbellek kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.
- **decoder_attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan çözücü (decoder) dikkat ağırlıkları.
- **cross_attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
- **encoder_last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.
- **encoder_attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.
- **loc** (`torch.Tensor`, şekli `(batch_size,)` veya `(batch_size, input_size)`, *isteğe bağlı*) -- Modelin aynı büyüklükte girdiler almasını sağlamak için her zaman serisinin bağlam penceresindeki değerleri kaydıran ve ardından orijinal büyüklüğe geri kaydırmak için kullanılan değer.
- **scale** (`torch.Tensor`, şekli `(batch_size,)` veya `(batch_size, input_size)`, *isteğe bağlı*) -- Modelin aynı büyüklükte girdiler almasını sağlamak için her zaman serisinin bağlam penceresinin ölçeklendirme değerleri; ardından orijinal büyüklüğe geri ölçeklendirmede kullanılır.
- **static_features** (`torch.Tensor`, şekli `(batch_size, feature size)`, *isteğe bağlı*) -- Bir batch içindeki her zaman serisinin, çıkarım sırasında kovaryatlara kopyalanan statik özellikleri.

Örnekler:

```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 ayrıca static_real_features kullanabilir. Bunu yapmak için, veri setindeki bu tür özelliklerin sayısına göre AutoformerConfig'de num_static_real_features değerini ayarlayın (tourism_monthly veri seti durumunda

1'e eşitse), modeli başlatın ve aşağıda gösterildiği gibi çağırın:

```
>>> 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"],
... )
```

