Skip to main content

Differentiable computations of the signature and logsignature transforms, on both CPU and GPU.

Project description

Signatory

Differentiable computations of the signature and logsignature transforms, on both CPU and GPU.

What is the signature transform?

The signature transform is roughly analogous to the Fourier transform, in that it operates on a stream of data (often a time series). Whilst the Fourier transform extracts information about frequency, the signature transform extracts information about order and area. Furthermore (and unlike the Fourier transform), order and area represent all possible nonlinear effects: the signature transform is a universal nonlinearity, meaning that every continuous function of the input stream may be approximated arbitrary well by a linear function of its signature. If you’re doing machine learning then you probably understand why this is such a desirable property!

Besides this, the signature transform has many other nice properties – robustness to missing or irregularly sampled data; optional translation invariance; optional sampling invariance. Furthermore it can be used to encode certain physical quantities, and may be used for data compression.

Check out this for a primer on the use of the signature transform in machine learning, just as a feature transformation, and this for a more in-depth look at integrating the signature transform into neural networks.

Installation

pip install signatory==<SIGNATORY_VERSION>.<TORCH_VERSION> --no-cache-dir --force-reinstall

where <SIGNATORY_VERSION> is the version of Signatory you would like to download (the most recent version is 1.2.6) and <TORCH_VERSION> is the version of PyTorch you are using.

Available for Python 3.6, 3.7, 3.8 on Linux and Windows. Requires PyTorch 1.6.0, 1.7.0, or 1.7.1.

(If you need it, then previous versions of Signatory included support for older versions of Python, PyTorch, and MacOS, see here.)

After installation, just import signatory inside Python.

Take care not to run pip install signatory, as this will likely download the wrong version.

Example:

For example, if you are using PyTorch 1.7.1 and want Signatory 1.2.4, then you should run:

pip install signatory==1.2.4.1.7.1 --no-cache-dir --force-reinstall

Why you need to specify all of this:

Yes, this looks a bit odd. This is needed to work around limitations of PyTorch and pip.

The --no-cache-dir --force-reinstall flags are because pip doesn’t expect to need to care about versions quite as much as this, so it will sometimes erroneously use inappropriate caches if not told otherwise.

Installation from source is also possible; please consult the documentation. This also includes information on how to run the tests and benchmarks.

If you have any problems with installation then check the FAQ. If that doesn’t help then feel free to open an issue.

Documentation

The documentation is available here.

Example

Usage is straightforward. As a simple example,

import signatory
import torch
batch, stream, channels = 1, 10, 2
depth = 4
path = torch.rand(batch, stream, channels)
signature = signatory.signature(path, depth)
# signature is a PyTorch tensor

For further examples, see the documentation.

Citation

If you found this library useful in your research, please consider citing the paper.

@inproceedings{kidger2021signatory,
  title={{S}ignatory: differentiable computations of the signature and logsignature transforms, on both {CPU} and {GPU}},
  author={Kidger, Patrick and Lyons, Terry},
  booktitle={International Conference on Learning Representations},
  year={2021},
  note={\url{https://github.com/patrick-kidger/signatory}}
}

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

signatory-1.2.6.1.9.0.tar.gz (62.8 kB view details)

Uploaded Source

Built Distributions

signatory-1.2.6.1.9.0-cp39-cp39-win_amd64.whl (223.6 kB view details)

Uploaded CPython 3.9 Windows x86-64

signatory-1.2.6.1.9.0-cp38-cp38-win_amd64.whl (223.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

signatory-1.2.6.1.9.0-cp37-cp37m-win_amd64.whl (225.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

signatory-1.2.6.1.9.0-cp36-cp36m-win_amd64.whl (225.2 kB view details)

Uploaded CPython 3.6m Windows x86-64

File details

Details for the file signatory-1.2.6.1.9.0.tar.gz.

File metadata

  • Download URL: signatory-1.2.6.1.9.0.tar.gz
  • Upload date:
  • Size: 62.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.0

File hashes

Hashes for signatory-1.2.6.1.9.0.tar.gz
Algorithm Hash digest
SHA256 c9ab17df6286688c1c7b12c0e906031a1fe7681dfca551876c1ff616e12807d8
MD5 adf763f2ecff56b353eac3fbcac3e9c3
BLAKE2b-256 f560b88949987377607876794e6b37351521148a658317b0bda422921d803ce7

See more details on using hashes here.

File details

Details for the file signatory-1.2.6.1.9.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: signatory-1.2.6.1.9.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 223.6 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for signatory-1.2.6.1.9.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9e7dc939064ab7b7576450585cdb3fac2d22adb507bc80e87e1acded2d248b53
MD5 98c9ca43510755642be89af379d8d6cd
BLAKE2b-256 4c457e6a18fc63ea1d73223033dab8c14ce1e2f2eadad8d06313b673fc5d03bd

See more details on using hashes here.

File details

Details for the file signatory-1.2.6.1.9.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: signatory-1.2.6.1.9.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 223.6 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.2

File hashes

Hashes for signatory-1.2.6.1.9.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 8c423539c676fb777c7de094b0fd9b97d54eb063dc507d12ec02e48709a0f96b
MD5 3fe7d9598b55cf70260c1fe0ef9a1034
BLAKE2b-256 97a15feae588f73fd68fec2e730e42143e5134a8a081b6955a14164f2ad06934

See more details on using hashes here.

File details

Details for the file signatory-1.2.6.1.9.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: signatory-1.2.6.1.9.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 225.1 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.0

File hashes

Hashes for signatory-1.2.6.1.9.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 8ce39d1f7712fd6d8c6b0c6d10c225345dd71fd2a97cf81306c7b93b8a9d671d
MD5 4e52e7b832a6a9dd230a12ab07bfb12f
BLAKE2b-256 022c8da4ec48725b40703f05faea25aaf49efea49ffdd7556145923388234dcd

See more details on using hashes here.

File details

Details for the file signatory-1.2.6.1.9.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: signatory-1.2.6.1.9.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 225.2 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.6.9

File hashes

Hashes for signatory-1.2.6.1.9.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 f29f3f7a95881f053074481c6d0dbddb5720dae53b4402874a2b6579cb07861a
MD5 6c22cc09dd38d8842894b4f90e49fe81
BLAKE2b-256 82ae5844e9109fed61dc564f69303b77b911c19bdc2ce0235c6c89d3ddb3c4d7

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