dtw_loss_functions.soft_dtw_implementations.soft_dtw_cuda_ron.barycenters module
SoftDTW Barycenter Averaging
Implements time series averaging using soft Dynamic Time Warping geometry. Based on the method from Cuturi & Blondel (ICML 2017).
Reference: https://github.com/tslearn-team/tslearn/blob/main/tslearn/barycenters/softdtw.py
- dtw_loss_functions.soft_dtw_implementations.soft_dtw_cuda_ron.barycenters.softdtw_barycenter(X: Tensor, *, gamma: float = 1.0, weights: Tensor | None = None, max_iter: int = 100, lr: float = 0.1, init: Tensor | None = None, device: str | device | None = None, verbose: bool = False, fused: bool | None = None, early_stopping: bool = True, patience: int = 10, tol: float = 1e-05) Tensor[source]
Compute a SoftDTW barycenter (time series average) through optimization.
This function finds the barycenter that minimizes the weighted sum of SoftDTW distances to all input time series using gradient-based optimization.
- Parameters:
X – Input time series of shape (B, N, D) where: - B: batch size (number of sequences) - N: sequence length - D: feature dimension
gamma – SoftDTW regularization parameter. Default: 1.0
weights – Optional weights for each sequence, shape (B,). Default: uniform
max_iter – Maximum optimization iterations. Default: 100
lr – Learning rate for optimization. Default: 0.1
init – Initial barycenter, shape (N, D). If None, uses weighted mean. Default: None
device – Device to compute on. If None, uses X’s device. Default: None
verbose – Print iteration progress and timing. Default: False
fused – Fused mode selection. Default: None (auto-select) - None: Auto-select (use fused if CUDA available) - True: Require fused mode (error if not available) - False: Never use fused mode (always use standard distance matrix)
early_stopping – Stop early if loss plateaus. Default: True
patience – Iterations without improvement before stopping. Default: 10
tol – Absolute improvement threshold for early stopping. Default: 1e-5 Note: Uses absolute improvement (best_loss - loss_val > tol), which handles negative SoftDTW values correctly
- Returns:
Barycenter of shape (N, D)
- dtw_loss_functions.soft_dtw_implementations.soft_dtw_cuda_ron.barycenters.softdtw_barycenter_cpu(X: Tensor, *, gamma: float = 1.0, weights: Tensor | None = None, max_iter: int = 100, lr: float = 0.1, init: Tensor | None = None, verbose: bool = False, fused: bool | None = None, early_stopping: bool = True, patience: int = 10, tol: float = 1e-05) Tensor[source]
Compute a SoftDTW barycenter on CPU (convenience wrapper).
- Parameters:
X – Input time series of shape (B, N, D)
gamma – SoftDTW regularization parameter. Default: 1.0
weights – Optional weights for each sequence. Default: uniform
max_iter – Maximum optimization iterations. Default: 100
lr – Learning rate for optimization. Default: 0.01
init – Initial barycenter. If None, uses weighted mean. Default: None
verbose – Print iteration progress and timing. Default: False
fused – Fused mode selection. Default: None (auto-select)
early_stopping – Stop early if loss plateaus. Default: True
patience – Iterations without improvement before stopping. Default: 10
tol – Improvement threshold for early stopping. Default: 1e-5
- Returns:
Barycenter of shape (N, D)