Signature Computations on CPU and GPU
Project description
Fast Signature Computations on CPU and GPU
Installation
Before installing, please ensure you have a compatible C++ compiler installed (MSVC for Windows, GCC or Clang for Linux and MacOS), then run
pip install pysiglib
pySigLib will automatically detect CUDA, provided the CUDA_PATH environment variable is set correctly.
To manually disable CUDA and build pySigLib for CPU only, create an environment variable CUSIG and set
it to 0:
set CUSIG=0
pip install pysiglib
For detailed and up-to-date installation instructions on Windows, Linux and MacOS, see the installation guide.
Documentation
Full documentation is available at https://pysiglib.readthedocs.io
Examples
Signatures
pySigLib implements truncated signature transforms through the function pysiglib.signature,
which takes as input a path or batch of paths X, and a truncation degree.
X can be a numpy array or a torch tensor. For a single path, X must be of shape
(path length, path dimension). For a batch of paths, it must be of shape
(batch size, path length, path dimension).
The computation will run on whichever device X is on. For example, passing
X = np.random.uniform(size=(32, 1000, 10)) will trigger the computation to run
on the CPU, whilst X = torch.rand(32, 1000, 10, device = "cuda") will run
on the CUDA device.
import pysiglib
import numpy as np
X = np.random.uniform(size=(32, 1000, 10))
sig = pysiglib.signature(X, degree = 5)
Signature Kernels
pySigLib implements signature kernels through the function pysiglib.sig_kernel,
which takes as input a pair of paths or a pair of batches of paths X, Y. The
dyadic_order parameter can be used to refine the PDE grid, giving more
accurate results. If specified as an integer, the same refinement factor
is applied to both X and Y. To apply different factors to the two paths,
dyadic_order can be specified as a tuple.
As with signatures, X,Y can be numpy arrays or torch tensors, and must have the
same shapes as described above. Again, the computation will run on whichever
device X,Y are located on.
import pysiglib
import numpy as np
X = np.random.uniform(size=(32, 1000, 10))
Y = np.random.uniform(size=(32, 1000, 10))
sig = pysiglib.sig_kernel(X, Y, dyadic_order=1)
# In cases where the paths differ in length, it may
# be advantageous to refine the PDE grid by different
# amounts for X and Y:
X = np.random.uniform(size=(32, 100, 10))
Y = np.random.uniform(size=(32, 5000, 10))
sig = pysiglib.sig_kernel(X, Y, dyadic_order=(3, 0))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pysiglib-0.1.0.tar.gz.
File metadata
- Download URL: pysiglib-0.1.0.tar.gz
- Upload date:
- Size: 322.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18b99d1a130d8122be37b21dfbda8c73ca181181f128f0dbdb68ef67a25dcb5e
|
|
| MD5 |
19fd53cce4cafdc386f252871846ad00
|
|
| BLAKE2b-256 |
89a3124289638f66f09d7c692dc988b26fd63f8dd8adf4eb6f8b48ff7df5df56
|