# OTW

Implementation of OTW, presented in [LLSH23]

## Authors

Alberto Zancanaro <alberto.zancanaro@uni.lu>

class dtw_loss_functions.otw.otw(m: float = 1, s: int | float = 0.5, beta: float = 1, reduction: str = 'mean')

  Bases: `Module`

  Methods

  `forward`(x, y) | Computes the OTW distance between two time series.

  forward(x: Tensor, y: Tensor) → Tensor

    Computes the OTW distance between two time series.

    Parameters:

      - x (torch.Tensor) – First time series, of shape `B x L` where `B` is the batch size and `L` is the length of the time series.

      - y (torch.Tensor) – Second time series, of shape `B x L` where `B` is the batch size and `L` is the length of the time series.

    Returns:

      OTW distance between the two time series

    Return type:

      torch.Tensor

dtw_loss_functions.otw.otw_distance(x: Tensor, y: Tensor, m: float = 1, s: int | float = 0.5, beta: float = 1, reduction: str = 'mean') → Tensor

  Implements the OTW distance between two time series, as defined in equations (9) of the paper.

  Parameters:

    - x (torch.Tensor) – First time series, of shape `B x L` where `B` is the batch size and `L` is the length of the time series.

    - y (torch.Tensor) – Second time series, of shape `B x L` where `B` is the batch size and `L` is the length of the time series.

    - m (float) – Waste cost parameter, default is `1`.

    - s (int | float) – Window size parameter, it can be an integer or a float between `0` and `1`. Default is `0.5`. If float, it is interpreted as a fraction of the length of the time series. If integer, it is interpreted as the number of time steps.

    - beta (float) – Hyperparameter for the smooth l1 loss, default is `1`.

  Returns:

    OTW distance between the two time series

  Return type:

    torch.Tensor

dtw_loss_functions.otw.smooth_l1_loss(x: Tensor, beta: float, reduction='mean') → Tensor

  Computes the smooth l1 of the input tensor x, as defined in equation (9) of the paper.

  Parameters:

    - x (torch.Tensor) – Input tensor of shape `B`. Each element corresponds to the difference between two time series.

    - beta (float) – Hyperparameter for the smooth l1 loss.

    - reduction (str) – Specifies the reduction to apply to the output: `none` | `mean` | `sum`. Default: `mean`.

  Returns:

    Smooth l1 loss of the input tensor. If reduction is `none`, the output has the same shape as x. If reduction is `mean` or `sum`, the output is a scalar.

  Return type:

    torch.Tensor

dtw_loss_functions.otw.window_cumsum(x: Tensor, s: int) → Tensor

  Computes the cumulative sum of the input tensor x as defined in equation (7) of the paper.

  Given a time series A represented as an array of values `[a1, a2, ..., aL]`, the window cumsum is computed as : `window_cumsum(A) = cumsum(A) - cumsum(A[0:L-s])` (i.e. the cumsum of all the array minus the cumsum of the array excluding the last s elements)

  Parameters:

    - x (torch.Tensor) – Input tensor of shape (B, L).

    - s (int) – Window size.

  Returns:

    Cumulative sum over the sliding window, of shape (B).

  Return type:

    torch.Tensor