https://github.com/joksas/nonideality-aware-mnn-training
Code used in the paper “Nonideality-Aware Training for Accurate and Robust Low-Power Memristive Neural Networks”
https://github.com/joksas/nonideality-aware-mnn-training
hardware-acceleration memristor neural-network
Last synced: 5 months ago
JSON representation
Code used in the paper “Nonideality-Aware Training for Accurate and Robust Low-Power Memristive Neural Networks”
- Host: GitHub
- URL: https://github.com/joksas/nonideality-aware-mnn-training
- Owner: joksas
- License: gpl-3.0
- Created: 2020-12-16T15:39:11.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-19T16:21:45.000Z (over 2 years ago)
- Last Synced: 2025-05-07T23:07:51.727Z (5 months ago)
- Topics: hardware-acceleration, memristor, neural-network
- Language: Python
- Homepage: https://doi.org/10.1002/advs.202105784
- Size: 470 KB
- Stars: 12
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Nonideality-Aware Training for Accurate and Robust Low-Power Memristive Neural Networks
## Requirements
Python >=3.9 and the packages listed in [requirements.txt](/requirements.txt).
## Repository structure
`awarememristor/crossbar`: memristor nonidealities and mapping onto crossbar arrays.
`awarememristor/training`: network training.
`awarememristor/simulations`: simulations presented in the manuscript.
`awarememristor/plotting`: figures presented in the manuscript.
## Reproducing results
Script [reproduce_paper.py](/reproduce_paper.py) can be used to reproduce the simulations and plots presented in the manuscript.
Please follow the instructions in the script to obtain any missing experimental data (or comment out the function calls that require these data).
After that, execute
```text
python reproduce_paper.py
```This might take a long time to finish, so you may want to split this file up in order to, for example, perform the simulations on multiple machines.
## Testing
To run unit tests, execute
```text
pytest tests
```## Using this package
**This package should not be used in production.**
The code is extensible but was written mostly with specific [simulations](/awarememristor/simulations) in mind.
Any new functionality (such as different nonidealities) should be incorporated carefully.
For example, to handle combinations of *multiple* linearity-preserving nonidealities (which is not currently supported), it may *not* be sufficient to simply apply them one after another.## Citation
A paper utilizing this package was published in [Advanced Science](https://onlinelibrary.wiley.com/journal/21983844) under the title ["Nonideality-Aware Training for Accurate and Robust Low-Power Memristive Neural Networks"](https://doi.org/10.1002/advs.202105784). To cite it, use the following BibTeX entry:
```bibtex
@article{JoksasWang2022,
author = {Joksas, Dovydas and Wang, Erwei and Barmpatsalos, Nikolaos and Ng, Wing H. and Kenyon, Anthony J. and Constantinides, George A. and Mehonic, Adnan},
date = {2022},
doi = {10.1002/advs.202105784},
journaltitle = {Advanced Science},
number = {17},
pages = {2105784},
title = {Nonideality-Aware Training for Accurate and Robust Low-Power Memristive Neural Networks},
volume = {9},
}
```