# EpyNN
  
 
**EpyNN is written in pure Python/NumPy.**
If you use EpyNN in academia, please cite:
Malard F., Danner L., Rouzies E., Meyer J. G., Lescop E., Olivier-Van Stichelen S. [**EpyNN: Educational python for Neural Networks**](https://www.softxjournal.com/article/S2352-7110(22)00090-5/fulltext), *SoftwareX* 19 (2022).
## Documentation
Please visit https://epynn.net/ for extensive documentation.
### Purpose
EpyNN is intended for **teachers**, **students**, **scientists**, or more generally anyone with minimal skills in Python programming **who wish to understand** and build from basic implementations of Neural Network architectures.
Although EpyNN can be used for production, it is meant to be a library of **homogeneous architecture templates** and **practical examples** which is expected to save an important amount of time for people who wish to learn, teach or **develop from scratch**.
### Content
EpyNN features **scalable**, **minimalistic** and **homogeneous** implementations of major Neural Network architectures in **pure Python/Numpy** including:
* [Embedding layer (Input)](https://epynn.net/Embedding.html)
* [Fully connected layer (Dense)](https://epynn.net/Dense.html)
* [Recurrent Neural Network (RNN)](https://epynn.net/RNN.html)
* [Long Short-Term Memory (LSTM)](https://epynn.net/LSTM.html)
* [Gated Recurrent Unit (GRU)](https://epynn.net/GRU.html)
* [Convolution (CNN)](https://epynn.net/Convolution.html)
* [Pooling (CNN)](https://epynn.net/Pooling.html)
* [Dropout - Regularization](https://epynn.net/Dropout.html)
* [Flatten - Adapter](https://epynn.net/Flatten.html)
Model and function rules and definition:
* [Architecture Layers - Model](https://epynn.net/EpyNN_Model.html)
* [Neural Network - Model](https://epynn.net/Layer_Model.html)
* [Data - Model](https://epynn.net/Data_Model.html)
* [Activation - Functions](https://epynn.net/activation.html)
* [Loss - Functions](https://epynn.net/loss.html)
While not enhancing, extending or replacing EpyNN's documentation, series of live examples in Python and Jupyter notebook formats are offered online and within the archive, including:
* [Data preparation - Examples](https://epynn.net/data_examples.html)
* [Network training - Examples](https://epynn.net/run_examples.html)
### Reliability
EpyNN has been cross-validated against TensorFlow/Keras API and provides identical results for identical configurations in the limit of float64 precision.
Please see [Is EpyNN reliable?](https://epynn.net/index.html#is-epynn-reliable) for details and executable codes.
### Recommended install
* **Linux/MacOS**
```bash
# Use bash shell
bash
# Clone git repository
git clone https://github.com/synthaze/EpyNN
# Change directory to EpyNN
cd EpyNN
# Install EpyNN dependencies
pip3 install -r requirements.txt
# Export EpyNN path in $PYTHONPATH for current session
export PYTHONPATH=$PYTHONPATH:$PWD
# Alternatively, not recommended
# pip3 install EpyNN
# epynn
```
**Linux:** Permanent export of EpyNN directory path in ```$PYTHONPATH```.
```bash
# Append export instruction to the end of .bashrc file
echo "export PYTHONPATH=$PYTHONPATH:$PWD" >> ~/.bashrc
# Source .bashrc to refresh $PYTHONPATH
source ~/.bashrc
```
**MacOS:** Permanent export of EpyNN directory path in ```$PYTHONPATH```.
```bash
# Append export instruction to the end of .bash_profile file
echo "export PYTHONPATH=$PYTHONPATH:$PWD" >> ~/.bash_profile
# Source .bash_profile to refresh $PYTHONPATH
source ~/.bash_profile
```
* **Windows**
```bash
# Clone git repository
git clone https://github.com/synthaze/EpyNN
# Change directory to EpyNN
chdir EpyNN
# Install EpyNN dependencies
pip3 install -r requirements.txt
# Show full path of EpyNN directory
echo %cd%
# Alternatively, not recommended
# pip3 install EpyNN
# epynn
```
Copy the full path of EpyNN directory, then go to:
``Control Panel > System > Advanced > Environment variable``
If you already have ``PYTHONPATH`` in the ``User variables`` section, select it and click ``Edit``, otherwise click ``New`` to add it.
Paste the full path of EpyNN directory in the input field, keep in mind that paths in ``PYTHONPATH`` should be comma-separated.
ANSI coloring schemes do work on native Windows10 and later. For prior Windows versions, users should configure their environment to work with ANSI coloring schemes for optimal experience.
## Current release
### 1.2 Publication release
* Minor revisions for peer-review process.
See [CHANGELOG.md](CHANGELOG.md) for past releases.
## Project tree
**epynn**
* [convolution](epynn/convolution)
* [backward.py](epynn/convolution/backward.py)
* [forward.py](epynn/convolution/forward.py)
* [models.py](epynn/convolution/models.py)
* [parameters.py](epynn/convolution/parameters.py)
* [dense](epynn/dense)
* [backward.py](epynn/dense/backward.py)
* [forward.py](epynn/dense/forward.py)
* [models.py](epynn/dense/models.py)
* [parameters.py](epynn/dense/parameters.py)
* [dropout](epynn/dropout)
* [backward.py](epynn/dropout/backward.py)
* [forward.py](epynn/dropout/forward.py)
* [models.py](epynn/dropout/models.py)
* [parameters.py](epynn/dropout/parameters.py)
* [embedding](epynn/embedding)
* [backward.py](epynn/embedding/backward.py)
* [dataset.py](epynn/embedding/dataset.py)
* [forward.py](epynn/embedding/forward.py)
* [models.py](epynn/embedding/models.py)
* [parameters.py](epynn/embedding/parameters.py)
* [flatten](epynn/flatten)
* [backward.py](epynn/flatten/backward.py)
* [forward.py](epynn/flatten/forward.py)
* [models.py](epynn/flatten/models.py)
* [parameters.py](epynn/flatten/parameters.py)
* [gru](epynn/gru)
* [backward.py](epynn/gru/backward.py)
* [forward.py](epynn/gru/forward.py)
* [models.py](epynn/gru/models.py)
* [parameters.py](epynn/gru/parameters.py)
* [lstm](epynn/lstm)
* [backward.py](epynn/lstm/backward.py)
* [forward.py](epynn/lstm/forward.py)
* [models.py](epynn/lstm/models.py)
* [parameters.py](epynn/lstm/parameters.py)
* [pooling](epynn/pooling)
* [backward.py](epynn/pooling/backward.py)
* [forward.py](epynn/pooling/forward.py)
* [models.py](epynn/pooling/models.py)
* [parameters.py](epynn/pooling/parameters.py)
* [rnn](epynn/rnn)
* [backward.py](epynn/rnn/backward.py)
* [forward.py](epynn/rnn/forward.py)
* [models.py](epynn/rnn/models.py)
* [parameters.py](epynn/rnn/parameters.py)
* [template](epynn/template)
* [backward.py](epynn/template/backward.py)
* [forward.py](epynn/template/forward.py)
* [models.py](epynn/template/models.py)
* [parameters.py](epynn/template/parameters.py)
* [network](epynn/network)
* [backward.py](epynn/network/backward.py)
* [evaluate.py](epynn/network/evaluate.py)
* [forward.py](epynn/network/forward.py)
* [hyperparameters.py](epynn/network/hyperparameters.py)
* [initialize.py](epynn/network/initialize.py)
* [models.py](epynn/network/models.py)
* [report.py](epynn/network/report.py)
* [training.py](epynn/network/training.py)
* [commons](epynn/commons)
* [io.py](epynn/commons/io.py)
* [library.py](epynn/commons/library.py)
* [logs.py](epynn/commons/logs.py)
* [loss.py](epynn/commons/loss.py)
* [maths.py](epynn/commons/maths.py)
* [metrics.py](epynn/commons/metrics.py)
* [models.py](epynn/commons/models.py)
* [plot.py](epynn/commons/plot.py)
* [schedule.py](epynn/commons/schedule.py)
**epynnlive**
* [author_music](epynnlive/author_music)
* [captcha_mnist](epynnlive/captcha_mnist)
* [dummy_boolean](epynnlive/dummy_boolean)
* [dummy_image](epynnlive/dummy_image)
* [dummy_string](epynnlive/dummy_string)
* [dummy_time](epynnlive/dummy_time)
* [ptm_protein](epynnlive/ptm_protein)
Raw data
{
"_id": null,
"home_page": "https://github.com/synthaze/epynn",
"name": "EpyNN",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "",
"author": "Florian Malard and St\u00e9phanie Olivier-Van Stichelen",
"author_email": "florian.malard@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/b6/3f/12ac62ad8a23000d302ab5cb121ad1c7d045ebde46b1bcf55f68bfae8f62/EpyNN-1.2.13.tar.gz",
"platform": null,
"description": "# EpyNN\n\n  \n\n \n\n**EpyNN is written in pure Python/NumPy.**\n\nIf you use EpyNN in academia, please cite:\n\nMalard F., Danner L., Rouzies E., Meyer J. G., Lescop E., Olivier-Van Stichelen S. [**EpyNN: Educational python for Neural Networks**](https://www.softxjournal.com/article/S2352-7110(22)00090-5/fulltext), *SoftwareX* 19 (2022).\n\n## Documentation\n\nPlease visit https://epynn.net/ for extensive documentation.\n\n### Purpose\n\nEpyNN is intended for **teachers**, **students**, **scientists**, or more generally anyone with minimal skills in Python programming **who wish to understand** and build from basic implementations of Neural Network architectures.\n\nAlthough EpyNN can be used for production, it is meant to be a library of **homogeneous architecture templates** and **practical examples** which is expected to save an important amount of time for people who wish to learn, teach or **develop from scratch**.\n\n### Content\n\nEpyNN features **scalable**, **minimalistic** and **homogeneous** implementations of major Neural Network architectures in **pure Python/Numpy** including:\n\n* [Embedding layer (Input)](https://epynn.net/Embedding.html)\n* [Fully connected layer (Dense)](https://epynn.net/Dense.html)\n* [Recurrent Neural Network (RNN)](https://epynn.net/RNN.html)\n* [Long Short-Term Memory (LSTM)](https://epynn.net/LSTM.html)\n* [Gated Recurrent Unit (GRU)](https://epynn.net/GRU.html)\n* [Convolution (CNN)](https://epynn.net/Convolution.html)\n* [Pooling (CNN)](https://epynn.net/Pooling.html)\n* [Dropout - Regularization](https://epynn.net/Dropout.html)\n* [Flatten - Adapter](https://epynn.net/Flatten.html)\n\nModel and function rules and definition:\n\n* [Architecture Layers - Model](https://epynn.net/EpyNN_Model.html)\n* [Neural Network - Model](https://epynn.net/Layer_Model.html)\n* [Data - Model](https://epynn.net/Data_Model.html)\n* [Activation - Functions](https://epynn.net/activation.html)\n* [Loss - Functions](https://epynn.net/loss.html)\n\nWhile not enhancing, extending or replacing EpyNN's documentation, series of live examples in Python and Jupyter notebook formats are offered online and within the archive, including:\n\n* [Data preparation - Examples](https://epynn.net/data_examples.html)\n* [Network training - Examples](https://epynn.net/run_examples.html)\n\n### Reliability\n\nEpyNN has been cross-validated against TensorFlow/Keras API and provides identical results for identical configurations in the limit of float64 precision.\n\nPlease see [Is EpyNN reliable?](https://epynn.net/index.html#is-epynn-reliable) for details and executable codes.\n\n### Recommended install\n\n* **Linux/MacOS**\n\n```bash\n\n# Use bash shell\nbash\n\n# Clone git repository\ngit clone https://github.com/synthaze/EpyNN\n\n# Change directory to EpyNN\ncd EpyNN\n\n# Install EpyNN dependencies\npip3 install -r requirements.txt\n\n# Export EpyNN path in $PYTHONPATH for current session\nexport PYTHONPATH=$PYTHONPATH:$PWD\n\n# Alternatively, not recommended\n# pip3 install EpyNN\n# epynn\n```\n\n**Linux:** Permanent export of EpyNN directory path in ```$PYTHONPATH```.\n\n```bash\n# Append export instruction to the end of .bashrc file\necho \"export PYTHONPATH=$PYTHONPATH:$PWD\" >> ~/.bashrc\n\n# Source .bashrc to refresh $PYTHONPATH\nsource ~/.bashrc\n```\n\n**MacOS:** Permanent export of EpyNN directory path in ```$PYTHONPATH```.\n\n```bash\n# Append export instruction to the end of .bash_profile file\necho \"export PYTHONPATH=$PYTHONPATH:$PWD\" >> ~/.bash_profile\n\n# Source .bash_profile to refresh $PYTHONPATH\nsource ~/.bash_profile\n```\n\n* **Windows**\n\n```bash\n# Clone git repository\ngit clone https://github.com/synthaze/EpyNN\n\n# Change directory to EpyNN\nchdir EpyNN\n\n# Install EpyNN dependencies\npip3 install -r requirements.txt\n\n# Show full path of EpyNN directory\necho %cd%\n\n# Alternatively, not recommended\n# pip3 install EpyNN\n# epynn\n```\n\nCopy the full path of EpyNN directory, then go to:\n``Control Panel > System > Advanced > Environment variable``\n\nIf you already have ``PYTHONPATH`` in the ``User variables`` section, select it and click ``Edit``, otherwise click ``New`` to add it.\n\nPaste the full path of EpyNN directory in the input field, keep in mind that paths in ``PYTHONPATH`` should be comma-separated.\n\nANSI coloring schemes do work on native Windows10 and later. For prior Windows versions, users should configure their environment to work with ANSI coloring schemes for optimal experience.\n\n## Current release\n\n### 1.2 Publication release\n\n* Minor revisions for peer-review process.\n\nSee [CHANGELOG.md](CHANGELOG.md) for past releases.\n\n\n\n## Project tree\n\n**epynn**\n * [convolution](epynn/convolution)\n * [backward.py](epynn/convolution/backward.py)\n * [forward.py](epynn/convolution/forward.py)\n * [models.py](epynn/convolution/models.py)\n * [parameters.py](epynn/convolution/parameters.py)\n * [dense](epynn/dense)\n * [backward.py](epynn/dense/backward.py)\n * [forward.py](epynn/dense/forward.py)\n * [models.py](epynn/dense/models.py)\n * [parameters.py](epynn/dense/parameters.py)\n * [dropout](epynn/dropout)\n * [backward.py](epynn/dropout/backward.py)\n * [forward.py](epynn/dropout/forward.py)\n * [models.py](epynn/dropout/models.py)\n * [parameters.py](epynn/dropout/parameters.py)\n * [embedding](epynn/embedding)\n * [backward.py](epynn/embedding/backward.py)\n * [dataset.py](epynn/embedding/dataset.py)\n * [forward.py](epynn/embedding/forward.py)\n * [models.py](epynn/embedding/models.py)\n * [parameters.py](epynn/embedding/parameters.py)\n * [flatten](epynn/flatten)\n * [backward.py](epynn/flatten/backward.py)\n * [forward.py](epynn/flatten/forward.py)\n * [models.py](epynn/flatten/models.py)\n * [parameters.py](epynn/flatten/parameters.py)\n * [gru](epynn/gru)\n * [backward.py](epynn/gru/backward.py)\n * [forward.py](epynn/gru/forward.py)\n * [models.py](epynn/gru/models.py)\n * [parameters.py](epynn/gru/parameters.py)\n * [lstm](epynn/lstm)\n * [backward.py](epynn/lstm/backward.py)\n * [forward.py](epynn/lstm/forward.py)\n * [models.py](epynn/lstm/models.py)\n * [parameters.py](epynn/lstm/parameters.py)\n * [pooling](epynn/pooling)\n * [backward.py](epynn/pooling/backward.py)\n * [forward.py](epynn/pooling/forward.py)\n * [models.py](epynn/pooling/models.py)\n * [parameters.py](epynn/pooling/parameters.py)\n * [rnn](epynn/rnn)\n * [backward.py](epynn/rnn/backward.py)\n * [forward.py](epynn/rnn/forward.py)\n * [models.py](epynn/rnn/models.py)\n * [parameters.py](epynn/rnn/parameters.py)\n * [template](epynn/template)\n * [backward.py](epynn/template/backward.py)\n * [forward.py](epynn/template/forward.py)\n * [models.py](epynn/template/models.py)\n * [parameters.py](epynn/template/parameters.py)\n * [network](epynn/network)\n * [backward.py](epynn/network/backward.py)\n * [evaluate.py](epynn/network/evaluate.py)\n * [forward.py](epynn/network/forward.py)\n * [hyperparameters.py](epynn/network/hyperparameters.py)\n * [initialize.py](epynn/network/initialize.py)\n * [models.py](epynn/network/models.py)\n * [report.py](epynn/network/report.py)\n * [training.py](epynn/network/training.py)\n * [commons](epynn/commons)\n * [io.py](epynn/commons/io.py)\n * [library.py](epynn/commons/library.py)\n * [logs.py](epynn/commons/logs.py)\n * [loss.py](epynn/commons/loss.py)\n * [maths.py](epynn/commons/maths.py)\n * [metrics.py](epynn/commons/metrics.py)\n * [models.py](epynn/commons/models.py)\n * [plot.py](epynn/commons/plot.py)\n * [schedule.py](epynn/commons/schedule.py)\n\n**epynnlive**\n * [author_music](epynnlive/author_music)\n * [captcha_mnist](epynnlive/captcha_mnist)\n * [dummy_boolean](epynnlive/dummy_boolean)\n * [dummy_image](epynnlive/dummy_image)\n * [dummy_string](epynnlive/dummy_string)\n * [dummy_time](epynnlive/dummy_time)\n * [ptm_protein](epynnlive/ptm_protein)\n\n\n",
"bugtrack_url": null,
"license": "GPL-3.0 License",
"summary": "EpyNN: Educational python for Neural Networks.",
"version": "1.2.13",
"project_urls": {
"Bug Tracker": "https://github.com/synthaze/epynn/issues",
"Homepage": "https://github.com/synthaze/epynn"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9293a2cdbdf6305e380b6b2160ad1e7f961afee58ee3b4786ba2ac940ea72251",
"md5": "ec5fd58cc857184c71b7d3084601249e",
"sha256": "dbe1036acb04c1d5f541c1ac98d4b51048b5d404a5751d7ab9d1ba200a8c53f5"
},
"downloads": -1,
"filename": "EpyNN-1.2.13-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ec5fd58cc857184c71b7d3084601249e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 101508,
"upload_time": "2024-01-06T19:50:19",
"upload_time_iso_8601": "2024-01-06T19:50:19.384358Z",
"url": "https://files.pythonhosted.org/packages/92/93/a2cdbdf6305e380b6b2160ad1e7f961afee58ee3b4786ba2ac940ea72251/EpyNN-1.2.13-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b63f12ac62ad8a23000d302ab5cb121ad1c7d045ebde46b1bcf55f68bfae8f62",
"md5": "b8582019f173e4c08505bf73a9234234",
"sha256": "8d23bf3f0043f0a339b7e4b026a7ee76d70349bdcd3c8a62af4f26466aa4a829"
},
"downloads": -1,
"filename": "EpyNN-1.2.13.tar.gz",
"has_sig": false,
"md5_digest": "b8582019f173e4c08505bf73a9234234",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 47551,
"upload_time": "2024-01-06T19:50:21",
"upload_time_iso_8601": "2024-01-06T19:50:21.534281Z",
"url": "https://files.pythonhosted.org/packages/b6/3f/12ac62ad8a23000d302ab5cb121ad1c7d045ebde46b1bcf55f68bfae8f62/EpyNN-1.2.13.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-06 19:50:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "synthaze",
"github_project": "epynn",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "cycler",
"specs": [
[
"==",
"0.10.0"
]
]
},
{
"name": "kiwisolver",
"specs": [
[
"==",
"1.3.2"
]
]
},
{
"name": "numpy",
"specs": [
[
"==",
"1.21.2"
]
]
},
{
"name": "Pillow",
"specs": [
[
"==",
"8.3.1"
]
]
},
{
"name": "Pygments",
"specs": [
[
"==",
"2.10.0"
]
]
},
{
"name": "pyparsing",
"specs": [
[
"==",
"2.4.7"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.8.2"
]
]
},
{
"name": "six",
"specs": [
[
"==",
"1.16.0"
]
]
},
{
"name": "tabulate",
"specs": [
[
"==",
"0.8.9"
]
]
},
{
"name": "termcolor",
"specs": [
[
"==",
"1.1.0"
]
]
},
{
"name": "texttable",
"specs": [
[
"==",
"1.6.4"
]
]
},
{
"name": "jupyter",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "nbconvert",
"specs": [
[
"==",
"5.4.1"
]
]
},
{
"name": "scipy",
"specs": [
[
"==",
"1.6.3"
]
]
},
{
"name": "wget",
"specs": [
[
"==",
"3.2"
]
]
},
{
"name": "utilsovs-pkg",
"specs": []
},
{
"name": "matplotlib",
"specs": []
}
],
"lcname": "epynn"
}