OTW — dtw_loss_functions documentation

# OTW

Implementation of OTW, presented in [LLSH23]

For more details see : - https://ieeexplore.ieee.org/document/10095915 - https://arxiv.org/abs/2306.00620

## 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, 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, 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 equation (10) of the paper.

  Parameters:

    - x (torch.Tensor) – First time series, of shape (B, 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, 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