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.
All augmentations are implemented as callable classes.
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]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)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 at1.0.
from augs import scaling
aug = scaling(sigma=0.3)
augmented_x = aug(x)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)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)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)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)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)