# PatchTSMixer

## Обзор

Модель PatchTSMixer была предложена в работе [TSMixer: Lightweight MLP-Mixer Model for Multivariate Time Series Forecasting](https://huggingface.co/papers/2306.09364) Vijay Ekambaram, Arindam Jati, Nam Nguyen, Phanwadee Sinthong и Jayant Kalagnanam.

PatchTSMixer — это лёгкий подход к моделированию временных рядов, основанный на архитектуре MLP-Mixer. В этой реализации HuggingFace мы предоставляем возможности PatchTSMixer, чтобы легко обеспечить лёгкое смешивание по патчам, каналам и скрытым признакам для эффективного моделирования многомерных временных рядов. Также поддерживаются различные механизмы внимания — от простого внимания с гейтами до более сложных блоков само-внимания, которые можно настроить под конкретные задачи. Модель можно предварительно обучить и затем использовать для различных задач, таких как прогнозирование, классификация и регрессия.

Аннотация из статьи следующая:

*TSMixer — это легкая нейросетевая архитектура, состоящая исключительно из модулей многослойных перцептронов (MLP), предназначенная для прогнозирования нескольких переменных и обучения представлений на временных рядах, разбитых на патчи. Наша модель вдохновлена успехом моделей MLP-Mixer в области компьютерного зрения. Мы демонстрируем сложности, связанные с адаптацией Vision MLP-Mixer для временных рядов, и предлагаем эмпирически проверенные компоненты для повышения точности. В частности, мы вводим новую парадигму проектирования, заключающуюся в подключении онлайн-голов согласования к каркасу MLP-Mixer для явного моделирования свойств временных рядов, таких как иерархия и корреляции между каналами. Мы также предлагаем гибридный подход к моделированию каналов для эффективной обработки шумных взаимодействий между каналами и обобщения на разнообразных наборах данных, что является общей проблемой существующих методов смешивания каналов на основе патчей. Кроме того, в каркас вводится простой механизм внимания с гейтами для приоритизации важных признаков. За счет включения этих легких компонентов мы значительно усиливаем способность к обучению простых структур MLP, превосходя сложные модели Transformer при минимальных вычислительных затратах. Более того, модульная конструкция TSMixer обеспечивает совместимость как с методами обучения с учителем, так и с методами маскированного самообучения, что делает его перспективным строительным блоком для фундаментальных моделей временных рядов. TSMixer превосходит передовые модели MLP и Transformer в задачах прогнозирования с существенным отрывом в 8–60%. Он также превосходит последние сильные бенчмарки моделей Patch-Transformer (на 1–2%) при значительном сокращении потребления памяти и времени выполнения (в 2–3 раза).*

Эта модель была предоставлена [ajati](https://huggingface.co/ajati), [vijaye12](https://huggingface.co/vijaye12), [gsinthong](https://huggingface.co/gsinthong), [namctin](https://huggingface.co/namctin), [wmgifford](https://huggingface.co/wmgifford), [kashif](https://huggingface.co/kashif).

## Пример использования

Приведённый ниже фрагмент кода показывает, как случайно инициализировать модель PatchTSMixer. Модель совместима с [Trainer API](../trainer).

```python

from transformers import PatchTSMixerConfig, PatchTSMixerForPrediction
from transformers import Trainer, TrainingArguments,

config = PatchTSMixerConfig(context_length = 512, prediction_length = 96)
model = PatchTSMixerForPrediction(config)
trainer = Trainer(model=model, args=training_args, 
            train_dataset=train_dataset,
            eval_dataset=valid_dataset)
trainer.train()
results = trainer.evaluate(test_dataset)
```

## Советы по использованию

Модель также можно использовать для классификации временных рядов и регрессии временных рядов. См. соответствующие классы [PatchTSMixerForTimeSeriesClassification](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerForTimeSeriesClassification) и [PatchTSMixerForRegression](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerForRegression).

## Ресурсы

- Подробное объяснение PatchTSMixer в формате блога можно найти [здесь](https://huggingface.co/blog/patchtsmixer). Блог также можно открыть в Google Colab.

## PatchTSMixerConfig[[transformers.PatchTSMixerConfig]]

#### transformers.PatchTSMixerConfig[[transformers.PatchTSMixerConfig]]

```python
transformers.PatchTSMixerConfig(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, is_encoder_decoder: bool = False, 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, context_length: int = 32, patch_length: int = 8, num_input_channels: int = 1, patch_stride: int = 8, num_parallel_samples: int = 100, d_model: int = 8, expansion_factor: int = 2, num_layers: int = 3, dropout: float | int = 0.2, mode: str = 'common_channel', gated_attn: bool = True, norm_mlp: str = 'LayerNorm', self_attn: bool = False, self_attn_heads: int = 1, use_positional_encoding: bool = False, positional_encoding_type: str = 'sincos', scaling: str | bool | None = 'std', loss: str = 'mse', init_std: float = 0.02, norm_eps: float = 1e-05, mask_type: str = 'random', random_mask_ratio: float = 0.5, num_forecast_mask_patches: list[int] | tuple[int, ...] | int | None = (2,), mask_value: int = 0, masked_loss: bool = True, channel_consistent_masking: bool = True, unmasked_channel_indices: list[int] | None = None, head_dropout: float | int = 0.2, distribution_output: str = 'student_t', prediction_length: int = 16, prediction_channel_indices: list | None = None, num_targets: int = 3, output_range: list | None = None, head_aggregation: str | None = 'max_pool')
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/configuration_patchtsmixer.py#L24)

**Параметры:**

context_length (`int`, *необязательный*, по умолчанию 32) : Длина контекста/истории для входной последовательности.

patch_length (`int`, *optional*, по умолчанию 8) : Длина патча для входной последовательности.

num_input_channels (`int`, *необязательный*, по умолчанию `1`) : Количество входных каналов.

patch_stride (`int`, *optional*, по умолчанию 8) : Определяет перекрытие между двумя последовательными патчами. Установите значение, равное patch_length (или большее), если требуется, чтобы патчи не перекрывались.

num_parallel_samples (`int`, *optional*, по умолчанию 100) : Количество образцов, генерируемых параллельно для вероятностного прогноза.

d_model (`int`, *необязательный*, по умолчанию `8`) : Размер слоев кодировщика и пулера.

expansion_factor (`int`, *optional*, по умолчанию 2) : Коэффициент расширения, используемый внутри MLP. Рекомендуемый диапазон — от 2 до 5. Чем больше значение, тем сложнее модель.

num_layers (`int`, *необязательный*, по умолчанию `3`) : Количество скрытых слоев в декодере Transformer.

dropout (`Union[float, int]`, *необязательный*, по умолчанию `0.2`) : Доля для всех слоёв dropout.

mode (`str`, *необязательный*, по умолчанию `"common_channel"`) : Режим миксера. Определяет способ обработки каналов. Допустимые значения: "common_channel", "mix_channel". В режиме "common_channel" используется независимое моделирование каналов без явного смешивания. Смешивание каналов происходит неявно через общие веса между каналами. (предпочтительный первый подход) В режиме "mix_channel" используется явное смешивание каналов в дополнение к миксеру патчей и признаков. (предпочтительный подход, когда корреляции между каналами имеют критическое значение для модели)

gated_attn (`bool`, *необязательный*, по умолчанию `True`) : Включает Gated Attention.

norm_mlp (`str`, *необязательный*, по умолчанию `"LayerNorm"`) : слой нормализации (BatchNorm или LayerNorm).

self_attn (`bool`, *необязательный*, по умолчанию `False`) : Включает Tiny self attention между патчами. Это можно включить, если результат Vanilla PatchTSMixer с gated attention неудовлетворителен. Включение приводит к явным парным attention и моделированию между патчами.

self_attn_heads (`int`, *необязательный*, по умолчанию 1) : Количество голов само-внимания. Работает только при установке `self_attn` в `True`.

use_positional_encoding (`bool`, *необязательный*, по умолчанию `False`) : Включает использование позиционного эмбеддинга для небольших слоёв само-внимания. Работает только при установке `self_attn` в `True`.

positional_encoding_type (`str`, *необязательный*, по умолчанию `"sincos"`) : Позиционные кодировки. Поддерживаются варианты `"random"` и `"sincos"`. Работает только при установке `use_positional_encoding` в `True`

scaling (`string` или `bool`, *необязательный*, по умолчанию `"std"`) : Указывает, следует ли масштабировать входные целевые значения с помощью масштабирующего типа "mean", "std" или без масштабирования, если `None`. Если `True`, масштабирующий тип устанавливается в "mean".

loss (`string`, *необязательный*, по умолчанию `"mse"`) : Функция потерь для модели, соответствующая голове `distribution_output`. Для параметрических распределений это отрицательная логарифмическая правдоподобность ("nll"), а для точечных оценок — средняя квадратичная ошибка "mse".

init_std (`float`, *необязательный*, по умолчанию `0.02`) : Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.

norm_eps (`float`, *optional*, по умолчанию 1e-05) : Значение, добавляемое к знаменателю для обеспечения численной стабильности нормализации.

mask_type (`str`, *необязательный*, по умолчанию `"random"`) : Тип маскирования, используемый в режиме Masked Pretraining. Допустимые значения: "random", "forecast". При случайном маскировании точки маскируются случайным образом. При прогнозном маскировании точки маскируются в конце последовательности.

random_mask_ratio (`float`, *optional*, по умолчанию 0.5) : Соотношение маскирования, используемое, когда `mask_type` равно `random`. Чем выше значение, тем больше элементов маскируется.

num_forecast_mask_patches (`int` или `list`, *необязательный*, по умолчанию `[2]`) : Количество патчей, которые будут замаскированы в конце каждого образца батча. Если это целое число, все образцы в батче будут иметь одинаковое количество замаскированных патчей. Если это список, образцы в батче будут случайно маскироваться в соответствии с числами, заданными в списке. Этот аргумент используется только для предварительного обучения прогнозированию.

mask_value (`float`, *необязательный*, по умолчанию `0.0`) : Значение маски.

masked_loss (`bool`, *необязательный*, по умолчанию `True`) : Вычисляется ли loss предобучения только для замаскированных фрагментов или для всего вывода.

channel_consistent_masking (`bool`, *необязательный*, по умолчанию `True`) : Если значение равно true, маскирование будет одинаковым для всех каналов временного ряда. В противном случае позиции маскирования будут различаться между каналами.

unmasked_channel_indices (`list`, *необязательный*) : Каналы, которые не маскируются во время предварительного обучения.

head_dropout (`float`, *optional*, по умолчанию 0.2) : Вероятность dropout в голове `PatchTSMixer`.

distribution_output (`string`, *optional*, по умолчанию `"student_t"`) : Распределение выходного слоя модели при loss="nll". Может принимать значения "student_t", "normal" или "negative_binomial".

prediction_length (`int`, *optional*, по умолчанию 16) : Количество шагов времени для прогноза в задаче прогнозирования. Также известно как Forecast Horizon.

prediction_channel_indices (`list`, *optional*) : Список индексов каналов для прогнозирования. Если значение равно None, прогнозируются все каналы. Ожидается, что целевые данные содержат все каналы, и мы явно фильтруем каналы в предсказаниях и целевых данных перед вычислением функции потерь.

num_targets (`int`, *optional*, по умолчанию 3) : Количество целевых переменных (размерность регрессируемой переменной) для задачи регрессии.

output_range (`list`, *необязательный*) : Диапазон вывода для ограничения в задаче регрессии. По умолчанию — None.

head_aggregation (`str`, *необязательный*, по умолчанию `"max_pool"`) : Режим агрегации для задачи классификации или регрессии. Допустимые значения: `None`, "use_last", "max_pool", "avg_pool".

Это класс конфигурации для хранения настроек модели PatchTSMixerModel. Он используется для создания модели Patchtsmixer в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации модели [ibm/patchtsmixer-etth1-pretrain](https://huggingface.co/ibm/patchtsmixer-etth1-pretrain)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Пример:

```python
>>> from transformers import PatchTSMixerConfig, PatchTSMixerModel

>>> # Initializing a default PatchTSMixer configuration
>>> configuration = PatchTSMixerConfig()

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

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

## PatchTSMixerModel[[transformers.PatchTSMixerModel]]

#### transformers.PatchTSMixerModel[[transformers.PatchTSMixerModel]]

```python
transformers.PatchTSMixerModel(config: PatchTSMixerConfig, mask_input: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1200)

**Параметры:**

config ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

mask_input (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли модуль `PatchTSMixerMasking` для маскирования входных данных.

Модель PatchTSMixer для прогнозирования временных рядов.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.PatchTSMixerModel.forward]]

```python
forward(past_values: Tensor, observed_mask: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1226)

**Параметры:**

past_values (`torch.Tensor` формы `(batch_size, seq_length, num_input_channels)`) : Контекстные значения временного ряда. Для задачи предобучения это входной временной ряд, по которому предсказывается замаскированная часть. Для задачи прогнозирования это исторические/прошлые значения временного ряда. Аналогично, для задач классификации или регрессии это соответствующие контекстные значения временного ряда. Для одномерных временных рядов размерность `num_input_channels` должна быть равна 1. Для многомерных временных рядов она больше 1.

observed_mask (`torch.Tensor` формы `(batch_size, sequence_length, num_input_channels)`, *необязательный*) : Булева маска, указывающая, какие значения `past_values` были наблюдаемы, а какие отсутствуют. Значения маски выбираются из диапазона `[0, 1]`: - 1 для **наблюдаемых** значений, - 0 для **отсутствующих** значений (т. е. NaN, заменённых нулями).

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

**Возвращает:** `PatchTSMixerModelOutput` или `tuple(torch.Tensor)`

Объект `PatchTSMixerModelOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) и входных данных.

Метод forward модели [PatchTSMixerModel](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerModel) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, num_channels, num_patches, d_model)`) -- Скрытое состояние на выходе последнего слоя модели.
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*) -- Скрытые состояния модели на выходе каждого слоя.
- **patch_input** (`torch.Tensor` формы `(batch_size, num_channels, num_patches, patch_length)`) -- Вводные данные модели, разбитые на патчи.
- **mask** (`torch.Tensor` формы `(batch_size, num_channels, num_patches)`, *необязательный*) -- Bool Tensor, где True указывает на замаскированные патчи, а False — на остальные.
- **loc** (`torch.Tensor` формы `(batch_size, 1, num_channels)`, *необязательный*) -- Указывает среднее значение контекстного окна по каждому каналу. Используется для денормализации revin вне модели, если revin включен.
- **scale** (`torch.Tensor` формы `(batch_size, 1, num_channels)`, *необязательный*) -- Задаёт стандартное отклонение контекстного окна для каждого канала. Используется для денормализации revin вне модели, если revin включён.

## PatchTSMixerForPrediction[[transformers.PatchTSMixerForPrediction]]

#### transformers.PatchTSMixerForPrediction[[transformers.PatchTSMixerForPrediction]]

```python
transformers.PatchTSMixerForPrediction(config: PatchTSMixerConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1481)

**Параметры:**

config (`PatchTSMixerConfig`) : Конфигурация.

**Возвращаемое значение:**

`None`.

`PatchTSMixer` для задач прогнозирования.

#### forward[[transformers.PatchTSMixerForPrediction.forward]]

```python
forward(past_values: Tensor, observed_mask: typing.Optional[torch.Tensor] = None, future_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1523)

**Параметры:**

past_values (`torch.Tensor` формы `(batch_size, seq_length, num_input_channels)`) : Контекстные значения временного ряда. Для задачи предобучения это входной временной ряд, по которому предсказывается замаскированная часть. Для задачи прогнозирования это исторические/прошлые значения временного ряда. Аналогично, для задач классификации или регрессии это соответствующие контекстные значения временного ряда. Для одномерных временных рядов размерность `num_input_channels` должна быть равна 1. Для многомерных временных рядов она больше 1.

observed_mask (`torch.Tensor` формы `(batch_size, sequence_length, num_input_channels)`, *необязательный*) : Булева маска, указывающая, какие значения `past_values` были наблюдаемы, а какие отсутствуют. Значения маски выбираются из диапазона `[0, 1]`: - 1 для **наблюдаемых** значений, - 0 для **отсутствующих** значений (т. е. NaN, заменённых нулями).

future_values (`torch.Tensor` формы `(batch_size, target_len, num_input_channels)` для прогнозирования, : `(batch_size, num_targets)` для регрессии или `(batch_size,)` для классификации, *необязательный*): Целевые значения временного ряда, которые служат метками для модели. `future_values` — это то, что Transformer должен научиться выводить во время обучения, исходя из `past_values`. Обратите внимание, что для задачи предобучения это не требуется. Для задачи прогнозирования форма должна быть `(batch_size, target_len, num_input_channels)`. Даже если вы хотите прогнозировать только определенные каналы, задав индексы в параметре `prediction_channel_indices`, передавайте целевые данные со всеми каналами, так как фильтрация каналов как для прогноза, так и для целевых значений будет применяться вручную перед вычислением функции потерь.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_loss (`bool`,  *необязательный*) : Нужно ли возвращать потерю в вызове `forward`.

**Возвращает:** `PatchTSMixerForPredictionOutput` или `tuple(torch.Tensor)`

Объект `PatchTSMixerForPredictionOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) и входных данных.

Метод forward класса [PatchTSMixerForPrediction](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerForPrediction) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **loss** (`*optional*`, возвращается, если задан `y`, `torch.Tensor` формы `()`) -- Суммарная функция потерь.
- **prediction_outputs** (`torch.Tensor` формы `(batch_size, prediction_length, num_input_channels)`) -- Выходные данные прогноза из прогнозного слоя.
- **last_hidden_state** (`torch.Tensor` формы `(batch_size, num_input_channels, num_patches, d_model)`) -- Вложения бэкбона до передачи в head.
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*) -- Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные данные начального слоя встраивания.
- **loc** (`torch.Tensor`, *optional* формы `(batch_size, 1, num_input_channels)`) -- Среднее входных данных
- **scale** (`torch.Tensor`, *необязательный* с формой `(batch_size, 1, num_input_channels)`) -- Стандартное отклонение входных данных

## PatchTSMixerForTimeSeriesClassification[[transformers.PatchTSMixerForTimeSeriesClassification]]

#### transformers.PatchTSMixerForTimeSeriesClassification[[transformers.PatchTSMixerForTimeSeriesClassification]]

```python
transformers.PatchTSMixerForTimeSeriesClassification(config: PatchTSMixerConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1707)

**Параметры:**

config (`PatchTSMixerConfig`) : Конфигурация.

**Возвращаемое значение:**

`None`.

`PatchTSMixer` для задач классификации.

#### forward[[transformers.PatchTSMixerForTimeSeriesClassification.forward]]

```python
forward(past_values: Tensor, target_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1734)

**Параметры:**

past_values (`torch.Tensor` формы `(batch_size, seq_length, num_input_channels)`) : Контекстные значения временного ряда. Для задачи предобучения это входной временной ряд, по которому предсказывается замаскированная часть. Для задачи прогнозирования это исторические/прошлые значения временного ряда. Аналогично, для задач классификации или регрессии это соответствующие контекстные значения временного ряда. Для одномерных временных рядов размерность `num_input_channels` должна быть равна 1. Для многомерных временных рядов она больше 1.

target_values (`torch.Tensor` формы `(batch_size, target_len, num_input_channels)` для прогнозирования, : `(batch_size, num_targets)` для регрессии или `(batch_size,)` для классификации, *необязательный*): Целевые значения временного ряда, которые служат метками для модели. `target_values` — это то, что Transformer должен научиться выводить в процессе обучения, получая на вход `past_values`. Обратите внимание, что для задачи предобучения это не требуется. Для задачи прогнозирования форма должна быть `(batch_size, target_len, num_input_channels)`. Даже если вы хотите прогнозировать только определённые каналы, задав индексы в параметре `prediction_channel_indices`, передавайте целевые данные со всеми каналами, так как фильтрация каналов как для прогноза, так и для целевых значений будет применяться вручную перед вычислением функции потерь. Для задачи классификации форма имеет вид `(batch_size,)`. Для задачи регрессии форма имеет вид `(batch_size, num_targets)`.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_loss (`bool`, *необязательный*) : Нужно ли возвращать потерю в вызове `forward`.

**Возвращает:** `PatchTSMixerForTimeSeriesClassificationOutput` или `tuple(torch.Tensor)`

Объект `PatchTSMixerForTimeSeriesClassificationOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) и входных данных.

Метод forward класса [PatchTSMixerForTimeSeriesClassification](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerForTimeSeriesClassification) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **loss** (`*optional*`, возвращается, если задан `y`, `torch.Tensor` формы `()`) -- Суммарная функция потерь.
- **prediction_outputs** (`torch.Tensor` формы `(batch_size, num_labels)`) -- Выходные данные предсказания из классификационной головы.
- **last_hidden_state** (`torch.Tensor` формы `(batch_size, num_input_channels, num_patches, d_model)`) -- Вложения бэкбона до передачи в head.
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*) -- Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные данные начального слоя встраивания.

## PatchTSMixerForPretraining[[transformers.PatchTSMixerForPretraining]]

#### transformers.PatchTSMixerForPretraining[[transformers.PatchTSMixerForPretraining]]

```python
transformers.PatchTSMixerForPretraining(config: PatchTSMixerConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1313)

**Параметры:**

config ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

`PatchTSMixer` для предобучения с маскированием.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.PatchTSMixerForPretraining.forward]]

```python
forward(past_values: Tensor, observed_mask: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1323)

**Параметры:**

past_values (`torch.Tensor` формы `(batch_size, seq_length, num_input_channels)`) : Контекстные значения временного ряда. Для задачи предобучения это входной временной ряд, по которому предсказывается замаскированная часть. Для задачи прогнозирования это исторические/прошлые значения временного ряда. Аналогично, для задач классификации или регрессии это соответствующие контекстные значения временного ряда. Для одномерных временных рядов размерность `num_input_channels` должна быть равна 1. Для многомерных временных рядов она больше 1.

observed_mask (`torch.Tensor` формы `(batch_size, sequence_length, num_input_channels)`, *необязательный*) : Булева маска, указывающая, какие значения `past_values` были наблюдаемы, а какие отсутствуют. Значения маски выбираются из диапазона `[0, 1]`: - 1 для **наблюдаемых** значений, - 0 для **отсутствующих** значений (т. е. NaN, заменённых нулями).

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_loss (`bool`,  *необязательный*) : Нужно ли возвращать потерю в вызове `forward`.

**Возвращает:** `PatchTSMixerForPreTrainingOutput` или `tuple(torch.Tensor)`

Объект `PatchTSMixerForPreTrainingOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) и входных данных.

Метод forward класса [PatchTSMixerForPretraining](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerForPretraining) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **loss** (`*optional*`, возвращается, если задан `y`, `torch.Tensor` формы `()`) -- Суммарная функция потерь
- **prediction_outputs** (`torch.Tensor` формы `(batch_size, num_input_channels, num_patches, patch_length)`) -- Выход предсказания из pretrain-головы.
- **last_hidden_state** (`torch.Tensor` формы `(batch_size, num_input_channels, num_patches, d_model)`) -- Вложения бэкбона до передачи в head.
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*) -- Скрытые состояния модели на выходе каждого слоя.

## PatchTSMixerForRegression[[transformers.PatchTSMixerForRegression]]

#### transformers.PatchTSMixerForRegression[[transformers.PatchTSMixerForRegression]]

```python
transformers.PatchTSMixerForRegression(config: PatchTSMixerConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1875)

**Параметры:**

config ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

`PatchTSMixer` для задач регрессии.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.PatchTSMixerForRegression.forward]]

```python
forward(past_values: Tensor, target_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_loss: bool = True, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/patchtsmixer/modeling_patchtsmixer.py#L1913)

**Параметры:**

past_values (`torch.Tensor` формы `(batch_size, seq_length, num_input_channels)`) : Контекстные значения временного ряда. Для задачи предобучения это входной временной ряд, по которому предсказывается замаскированная часть. Для задачи прогнозирования это исторические/прошлые значения временного ряда. Аналогично, для задач классификации или регрессии это соответствующие контекстные значения временного ряда. Для одномерных временных рядов размерность `num_input_channels` должна быть равна 1. Для многомерных временных рядов она больше 1.

target_values (`torch.Tensor` формы `(batch_size, target_len, num_input_channels)` для прогнозирования, : `(batch_size, num_targets)` для регрессии или `(batch_size,)` для классификации, *необязательный*): Целевые значения временного ряда, которые служат метками для модели. `target_values` — это то, что Transformer должен научиться выводить в процессе обучения, получая на вход `past_values`. Обратите внимание, что для задачи предобучения это не требуется. Для задачи прогнозирования форма должна быть `(batch_size, target_len, num_input_channels)`. Даже если вы хотите прогнозировать только определённые каналы, задав индексы в параметре `prediction_channel_indices`, передавайте целевые данные со всеми каналами, так как фильтрация каналов как для прогноза, так и для целевых значений будет применяться вручную перед вычислением функции потерь. Для задачи классификации форма имеет вид `(batch_size,)`. Для задачи регрессии форма имеет вид `(batch_size, num_targets)`.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_loss (`bool`, *необязательный*) : Нужно ли возвращать потерю в вызове `forward`.

**Возвращает:** `PatchTSMixerForRegressionOutput` или `tuple(torch.Tensor)`

Объект `PatchTSMixerForRegressionOutput` или кортеж `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([PatchTSMixerConfig](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerConfig)) и входных данных.

Метод forward класса [PatchTSMixerForRegression](/docs/transformers/main/ru/model_doc/patchtsmixer#transformers.PatchTSMixerForRegression) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **loss** (`*optional*`, возвращается, если задан `y`, `torch.Tensor` формы `()`) -- Суммарная функция потерь.
- **regression_outputs** (`torch.Tensor` формы `(batch_size, num_targets)`) -- Выходные данные предсказания из регрессионной головы.
- **last_hidden_state** (`torch.Tensor` формы `(batch_size, num_input_channels, num_patches, d_model)`) -- Вложения бэкбона до передачи в head.
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*) -- Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные данные начального слоя встраивания.

