Time-Series Augmentations¶
FedProC provides a dedicated, high-performance, GPU-native time-series augmentation library under the augs package. Built entirely in pure PyTorch, these augmentations eliminate CPU-GPU round-trip latency bottlenecks, enabling ultra-fast, learnable differentiable data augmentation directly on GPU memory.
These augmentations are fully compatible with batch inputs of shape [B, T, D] (Batch size, Time length, Dimensions/Features) and adapt automatically to the active device of the input tensor.
Augmentations API Reference¶
All augmentations are implemented as callable classes.
1. Cutout¶
Stochastically zeroes out a single contiguous temporal segment within the time-series.
* Class: cutout(perc=0.1)
* Parameters:
* perc (float): The percentage of the sequence length to zero out.
from augs import cutout
aug = cutout(perc=0.15)
augmented_x = aug(x) # x is [B, T, D]
2. Jitter¶
Adds random zero-mean Gaussian noise directly to the signal.
* Class: jitter(sigma=0.3)
* Parameters:
* sigma (float): Standard deviation of the Gaussian noise.
from augs import jitter
aug = jitter(sigma=0.2)
augmented_x = aug(x)
3. Scaling¶
Scales each feature's magnitude along the entire sequence length stochastically using random Gaussian multiplier.
* Class: scaling(sigma=0.5)
* Parameters:
* sigma (float): Standard deviation of the scaling factor distribution centered at 1.0.
from augs import scaling
aug = scaling(sigma=0.3)
augmented_x = aug(x)
4. Time Warp¶
Implements highly optimized, GPU-native time-warping using PyTorch linear interpolation over a random monotonic speed-change anchor grid.
* Class: time_warp(n_speed_change=4, max_speed_ratio=2.0)
* Parameters:
* n_speed_change (int): Number of speed change segments.
* max_speed_ratio (float): Maximum speed scaling ratio.
from augs import time_warp
aug = time_warp(n_speed_change=3, max_speed_ratio=1.5)
augmented_x = aug(x)
5. Magnitude Warp¶
Applies the monotonic warping function along the channel/feature magnitude dimension instead of the temporal dimension.
* Class: magnitude_warp(n_speed_change=4, max_speed_ratio=2.0)
* Parameters: Same as time_warp.
from augs import magnitude_warp
aug = magnitude_warp(n_speed_change=3, max_speed_ratio=1.5)
augmented_x = aug(x)
6. Window Slice¶
Stochastically crops a random window of the time series and linear interpolates it back to its original length T.
* Class: window_slice(reduce_ratio=0.5)
* Parameters:
* reduce_ratio (float): The fraction of the original sequence length to keep.
from augs import window_slice
aug = window_slice(reduce_ratio=0.7)
augmented_x = aug(x)
7. Window Warp¶
Extracts a random window of the time series, compresses or expands it stochastically by a factor selected from scales, and then linear interpolates the concatenated sequences back to the original sequence length T.
* Class: window_warp(window_ratio=0.3, scales=[0.5, 2.0])
* Parameters:
* window_ratio (float): The percentage length of the window to warp.
* scales (list): Candidates for window length scale ratio.
from augs import window_warp
aug = window_warp(window_ratio=0.3, scales=[0.6, 1.8])
augmented_x = aug(x)
8. Subsequence¶
Stochastically crops a random subsequence, leaving it active, and zero-masks all elements outside the crop boundaries.
* Class: subsequence()
from augs import subsequence
aug = subsequence()
augmented_x = aug(x)