TensorFlow NUFFT is a fast, native non-uniform fast Fourier transform op for TensorFlow. It provides:
- Fast CPU/GPU kernels. The TensorFlow framework automatically handles device placement as usual.
- A simple, well-documented Python interface.
- Gradient definitions for automatic differentiation.
- Shape functions to support static shape inference.
The underlying algorithm is based on the NUFFT implementation by the Flatiron Institute. Please refer to FINUFFT and cuFINUFFT for more details.
You can install TensorFlow NUFFT with pip
:
pip install tensorflow-nufft
Note that only Linux wheels are currently being provided.
Each TensorFlow NUFFT release is compiled against a specific version of TensorFlow. To ensure compatibility, it is recommended to install matching versions of TensorFlow and TensorFlow NUFFT according to the table below.
TensorFlow NUFFT Version | TensorFlow Compatibility | Release Date |
---|---|---|
v0.12.0 | v2.11.x | Nov 27, 2022 |
v0.11.0 | v2.10.x | Oct 12, 2022 |
v0.10.1 | v2.10.x | Sep 26, 2022 |
v0.10.0 | v2.10.x | Sep 7, 2022 |
v0.9.0 | v2.9.x | Sep 5, 2022 |
v0.8.1 | v2.9.x | Jun 23, 2022 |
v0.8.0 | v2.9.x | May 20, 2022 |
v0.7.3 | v2.8.x | May 4, 2022 |
v0.7.2 | v2.8.x | Apr 29, 2022 |
v0.7.1 | v2.8.x | Apr 6, 2022 |
v0.7.0 | v2.8.x | Feb 8, 2022 |
v0.6.0 | v2.7.x | Jan 27, 2022 |
v0.5.0 | v2.7.x | Dec 12, 2021 |
v0.4.0 | v2.7.x | Nov 8, 2021 |
v0.3.2 | v2.6.x | Aug 18, 2021 |
v0.3.1 | v2.6.x | Aug 18, 2021 |
v0.3.0 | v2.6.x | Aug 13, 2021 |
Once installed, you can perform NUFFTs in your TensorFlow code simply as:
import tensorflow_nufft as tfft
outputs = tfft.nufft(inputs, points)
See the documentation for the
tfft.nufft
function to learn more about the different parameters.
Visit the docs for the API reference and examples of usage.
If you use this package and something does not work as you expected, please file an issue describing your problem. We're here to help!
If you find this software useful in your research, please cite us.
See CONTRIBUTORS for a list of people who have contributed to this project. Thank you!
All contributions are welcome. If there is an issue you would like to address or a feature you would like to add, you might want to begin by commenting on the corresponding issue (or if it doesn't exist yet, by creating a new issue).