nirtorch


Namenirtorch JSON
Version 1.0 PyPI version JSON
download
home_page
SummaryNeuromorphic Intermediate Representation
upload_time2023-12-06 14:32:04
maintainer
docs_urlNone
author
requires_python
license
keywords neuromorphic intermediate representation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # NIRTorch

PyTorch helpers for the [Neuromorphic Intermediate Representation (NIR)](https://github.com/neuromorphs/nir).
This is a no frills python package to enable torch based libraries to translate to NIR.

## Installation
```shell
pip install nirtorch
```

## Usage

NIRTorch is typically only interfaced by library/hardwarae developers.
NIRTorch provides the `extract_nir_graph` function that takes as input a `torch.nn.Module` and a means to map Torch modules into NIR nodes.
An NIR node is an element in the NIR compute graph, corresponding to neuromorphic ODEs.

Here is an example from the [Norse](https://github.com/norse/norse) library:

```python
def _extract_norse_module(module: torch.nn.Module) -> Optional[nir.NIRNode]:
    if isinstance(module, LIFBoxCell):
        return nir.LIF(
            tau=module.p.tau_mem_inv,
            v_th=module.p.v_th,
            v_leak=module.p.v_leak,
            r=torch.ones_like(module.p.v_leak),
        )
    elif isinstance(module, torch.nn.Linear):
        return nir.Linear(module.weight, module.bias)
    elif ...

    return None

def to_nir(
    module: torch.nn.Module, sample_data: torch.Tensor, model_name: str = "norse"
) -> nir.NIRNode:
    return extract_nir_graph(
        module, _extract_norse_module, sample_data, model_name=model_name
    )
```

## Acknowledgements
If you use NIR torch in your work, please cite the [following Zenodo reference](https://zenodo.org/record/8105042)

```
@software{nir2023,
  author       = {Abreu, Steven and
                  Bauer, Felix and
                  Eshraghian, Jason and
                  Jobst, Matthias and
                  Lenz, Gregor and
                  Pedersen, Jens Egholm and
                  Sheik, Sadique},
  title        = {Neuromorphic Intermediate Representation},
  month        = jul,
  year         = 2023,
  publisher    = {Zenodo},
  version      = {0.0.1},
  doi          = {10.5281/zenodo.8105042},
  url          = {https://doi.org/10.5281/zenodo.8105042}
}
```

## For developers
If you want to make sure that your code is linted correctly on your local machine, use [pre-commit](https://pre-commit.com/) to automatically perform checks before every git commit. To use it, first install the package in your environment
```
pip install pre-commit
```
and then install the pre-commit hooks that are listed in the root of this repository
```
pre-commit install
```
Next time you commit some changes, all the checks will be run!

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "nirtorch",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "neuromorphic,intermediate,representation",
    "author": "",
    "author_email": "Steven Abreu <s.abreu@rug.nl>, Felix Bauer <felix.bauer@synsen.ai>, Jason Eshraghian <jeshragh@ucsc.edu>, Matthias Jobst <matthias.jobst2@tu-dresden.de>, Gregor Lenz <mail@lenzgregor.com>, Jens Egholm Pedersen <jens@jepedersen.dk>, Sadique Sheik <sadique.sheik@synsense.ai>",
    "download_url": "https://files.pythonhosted.org/packages/fd/1b/27cb50acf5a0afcca55f238e32ea2a1ed9c5b58225346170682cd58fcfd6/nirtorch-1.0.tar.gz",
    "platform": null,
    "description": "# NIRTorch\n\nPyTorch helpers for the [Neuromorphic Intermediate Representation (NIR)](https://github.com/neuromorphs/nir).\nThis is a no frills python package to enable torch based libraries to translate to NIR.\n\n## Installation\n```shell\npip install nirtorch\n```\n\n## Usage\n\nNIRTorch is typically only interfaced by library/hardwarae developers.\nNIRTorch provides the `extract_nir_graph` function that takes as input a `torch.nn.Module` and a means to map Torch modules into NIR nodes.\nAn NIR node is an element in the NIR compute graph, corresponding to neuromorphic ODEs.\n\nHere is an example from the [Norse](https://github.com/norse/norse) library:\n\n```python\ndef _extract_norse_module(module: torch.nn.Module) -> Optional[nir.NIRNode]:\n    if isinstance(module, LIFBoxCell):\n        return nir.LIF(\n            tau=module.p.tau_mem_inv,\n            v_th=module.p.v_th,\n            v_leak=module.p.v_leak,\n            r=torch.ones_like(module.p.v_leak),\n        )\n    elif isinstance(module, torch.nn.Linear):\n        return nir.Linear(module.weight, module.bias)\n    elif ...\n\n    return None\n\ndef to_nir(\n    module: torch.nn.Module, sample_data: torch.Tensor, model_name: str = \"norse\"\n) -> nir.NIRNode:\n    return extract_nir_graph(\n        module, _extract_norse_module, sample_data, model_name=model_name\n    )\n```\n\n## Acknowledgements\nIf you use NIR torch in your work, please cite the [following Zenodo reference](https://zenodo.org/record/8105042)\n\n```\n@software{nir2023,\n  author       = {Abreu, Steven and\n                  Bauer, Felix and\n                  Eshraghian, Jason and\n                  Jobst, Matthias and\n                  Lenz, Gregor and\n                  Pedersen, Jens Egholm and\n                  Sheik, Sadique},\n  title        = {Neuromorphic Intermediate Representation},\n  month        = jul,\n  year         = 2023,\n  publisher    = {Zenodo},\n  version      = {0.0.1},\n  doi          = {10.5281/zenodo.8105042},\n  url          = {https://doi.org/10.5281/zenodo.8105042}\n}\n```\n\n## For developers\nIf you want to make sure that your code is linted correctly on your local machine, use [pre-commit](https://pre-commit.com/) to automatically perform checks before every git commit. To use it, first install the package in your environment\n```\npip install pre-commit\n```\nand then install the pre-commit hooks that are listed in the root of this repository\n```\npre-commit install\n```\nNext time you commit some changes, all the checks will be run!\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Neuromorphic Intermediate Representation",
    "version": "1.0",
    "project_urls": null,
    "split_keywords": [
        "neuromorphic",
        "intermediate",
        "representation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cd7492cc684fd83636b072318693676877af0d80c4e136067237f147f9a18d6f",
                "md5": "3f352af0eee0e737f73057087161a15f",
                "sha256": "72f4898a18ceb91d5a9b66515db2bb4a5893a8d11a77b48d9bbe058228995b02"
            },
            "downloads": -1,
            "filename": "nirtorch-1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3f352af0eee0e737f73057087161a15f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 13313,
            "upload_time": "2023-12-06T14:32:03",
            "upload_time_iso_8601": "2023-12-06T14:32:03.016806Z",
            "url": "https://files.pythonhosted.org/packages/cd/74/92cc684fd83636b072318693676877af0d80c4e136067237f147f9a18d6f/nirtorch-1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fd1b27cb50acf5a0afcca55f238e32ea2a1ed9c5b58225346170682cd58fcfd6",
                "md5": "6887742a99149ad7b5c5644f8fefa571",
                "sha256": "a0a7c485c0cb523a257a68b881c83d3710a471ad896188879a1bb722d47db2bf"
            },
            "downloads": -1,
            "filename": "nirtorch-1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "6887742a99149ad7b5c5644f8fefa571",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 18870,
            "upload_time": "2023-12-06T14:32:04",
            "upload_time_iso_8601": "2023-12-06T14:32:04.023389Z",
            "url": "https://files.pythonhosted.org/packages/fd/1b/27cb50acf5a0afcca55f238e32ea2a1ed9c5b58225346170682cd58fcfd6/nirtorch-1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-06 14:32:04",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "nirtorch"
}
        
Elapsed time: 0.18246s