Skip to main content

Differentiable and gpu enabled fast wavelet transforms in PyTorch

Project description

Pytorch Wavelet Toolbox (ptwt)

GitHub Actions PyPI Versions PyPI - Project PyPI - License

Welcome to the PyTorch (adaptive) wavelet toolbox. This package implements:

  • the fast wavelet transform (fwt) implemented in wavedec.
  • the inverse fwt can be used by calling waverec.
  • the 2d fwt is called wavedec2
  • and inverse 2d fwt waverec2.
  • single and two-dimensional wavelet packet forward transforms.
  • 1d sparse-matrix fast wavelet transforms with boundary filters.
  • adaptive wavelet support (experimental).
  • 2d boundary filters (experimental).

This toolbox supports pywt-wavelets.

Installation

Install the toolbox via pip or clone this repository. In order to use pip, type:

$ pip install ptwt

You can remove it later by typing pip uninstall ptwt.

Example usage:

import torch
import numpy as np
import pywt
import ptwt  # use " from src import ptwt " if you cloned the repo instead of using pip.

# generate an input of even length.
data = np.array([0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0])
data_torch = torch.from_numpy(data.astype(np.float32))
wavelet = pywt.Wavelet('haar')

# compare the forward fwt coefficients
print(pywt.wavedec(data, wavelet, mode='zero', level=2))
print(ptwt.wavedec(data_torch, wavelet, mode='zero', level=2))

# invert the fwt.
print(ptwt.waverec(ptwt.wavedec(data_torch, wavelet, mode='zero', level=2), wavelet))

Unit Tests

The tests folder contains multiple tests to allow independent verification of this toolbox. After cloning the repository, and moving into the main directory, and installing tox with pip install tox run:

$ tox -e py

Adaptive Wavelets (experimental)

Code to train an adaptive wavelet layer in PyTorch is available in the examples folder. In addition to static wavelets from pywt,

  • Adaptive product-filters
  • and optimizable orthogonal-wavelets are supported.

Sparse-Matrix-multiplication Transform (experimental).

In addition to convolution-based fwt implementations matrix-based code is available. Continuing the example above try:

# forward
coeff, fwt_matrix = ptwt.matrix_wavedec(data_torch, wavelet, level=2)
print(coeff)
# backward 
rec, ifwt_matrix = ptwt.matrix_waverec(coeff, wavelet, level=2)
print(rec)

📖 Citation

If you find this work useful please consider citing:

@phdthesis{handle:20.500.11811/9245,
  urn: https://nbn-resolving.org/urn:nbn:de:hbz:5-63361,
  author = {{Moritz Wolter}},
  title = {Frequency Domain Methods in Recurrent Neural Networks for Sequential Data Processing},
  school = {Rheinische Friedrich-Wilhelms-Universität Bonn},
  year = 2021,
  month = jul,
  url = {https://hdl.handle.net/20.500.11811/9245}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ptwt-0.0.4.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

ptwt-0.0.4-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file ptwt-0.0.4.tar.gz.

File metadata

  • Download URL: ptwt-0.0.4.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

File hashes

Hashes for ptwt-0.0.4.tar.gz
Algorithm Hash digest
SHA256 f99c4ccbf40c68572301f456a7d6ac441e050b44ff860051a434cedc716dcf5e
MD5 b1be32848a568b8ca60e09f26988baed
BLAKE2b-256 fbc1548eb8f4efc159b8e9858589e4b2afac5da7ed4119c2a7d2e88818bc3ba2

See more details on using hashes here.

File details

Details for the file ptwt-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: ptwt-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 27.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

File hashes

Hashes for ptwt-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a35ed6264a9ab678b90fa256eaaf0053114ba81c3d63134704350e9b43db970b
MD5 9c982257c23318ad3554f0e65f0ca755
BLAKE2b-256 08f0ca1d09e95e3a83b2a7cc4c1285541bc14fad0427aa6d0737d7b91c7f5ad9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page