v0lta/PyTorch-Wavelet-Toolbox
[JMLR] Differentiable fast wavelet transforms in PyTorch with GPU support.
What it solves
It provides a PyTorch-native implementation of wavelet transforms, enabling the use of discrete (DWT) and continuous (CWT) wavelet transforms within deep learning workflows. Unlike standard libraries, it allows these transforms to benefit from GPU acceleration and automatic differentiation (gradient support).
How it works
The toolbox implements various wavelet operations using PyTorch backends:
- Convolution-based transforms: Uses
conv1d,conv2d, and their transposed counterparts for fast wavelet transforms (fwt) across 1D, 2D, and 3D data. - Sparse-matrix transforms: Uses
torch.sparse.mmto implement boundary wavelets, which avoid adding extra pixels at the edges of the data. - Adaptive Wavelets: Provides experimental support for training adaptive product-filters and optimizable orthogonal-wavelets as layers within a neural network.
- Integration: It extends the functionality of
PyWaveletswhile ensuring compatibility with PyTorch tensors.
Who it’s for
Researchers and developers working on signal processing, image analysis, or neural network architectures that require multi-resolution analysis and differentiable wavelet transforms.
Highlights
- Multi-dimensional support: Includes analysis and synthesis for 1D, 2D, and 3D data.
- Hardware acceleration: Full GPU support via PyTorch.
- Differentiable: Supports gradients, making it suitable for integration into trainable ML models.
- Boundary handling: Offers sparse-matrix-based transforms to handle boundaries without padding.
- Wavelet Packets: Supports single and two-dimensional wavelet packet transforms.
Related
- Project
- Project
- Project
- Project
- Project