An open API service indexing awesome lists of open source software.

https://github.com/plasmacontrol/keras2c2

An update to Keras2c which supports Python 3.9, 3.10, 3.11, 3.12
https://github.com/plasmacontrol/keras2c2

Last synced: 9 months ago
JSON representation

An update to Keras2c which supports Python 3.9, 3.10, 3.11, 3.12

Awesome Lists containing this project

README

          

#######
keras2c2
#######

|Build-Status| |Codecov|

|License| |DOI|

keras2c2 is an update to keras2c that supports Python 3.9 to 3.12, on Linux, MacOS, and Windows. It adds addtional features.

keras2c is a library for deploying keras neural networks in C99, using only standard libraries.
It is designed to be as simple as possible for real time applications.

Please cite `this paper `_ if you use this work in your research:

.. code-block:: bibtex

R. Conlin, K. Erickson, J. Abbate, and E. Kolemen, “Keras2c: A library for converting Keras neural networks to real-time compatible C,”
Engineering Applications of Artificial Intelligence, vol. 100, p. 104182, Apr. 2021, doi: 10.1016/j.engappai.2021.104182.

Quickstart
**********

For windows, make sure that you have gcc installed. We recommend CYGWIN with make and gcc

After cloning the repo, install the necessary packages with ``pip install -r requirements.txt``.
Alternatively, create a conda environment using ``conda env create -f environment.yml``.

keras2c can be used from the command line:

.. code-block:: bash

python -m keras2c [-h] [-m] [-t] model_path function_name

A library for converting the forward pass (inference) part of a keras model to
a C function

positional arguments:
model_path File path to saved keras .h5 model file
function_name What to name the resulting C function

optional arguments:
-h, --help show this help message and exit
-m, --malloc Use dynamic memory for large arrays. Weights will be
saved to .csv files that will be loaded at runtime
-t , --num_tests Number of tests to generate. Default is 10

It can also be used with a python environment in the following manner:

.. code-block:: python

from keras2c import k2c
k2c(model, function_name, malloc=False, num_tests=10, verbose=True)

For more information, see `Installation `_ and `Usage `_

Supported Layers
****************
- **Core Layers**: Dense, Activation, Dropout, Flatten, Input, Reshape, Permute, RepeatVector, ActivityRegularization, SpatialDropout1D, SpatialDropout2D, SpatialDropout3D
- **Convolution Layers**: Conv1D, Conv2D, Conv3D, Cropping1D, Cropping2D, Cropping3D, UpSampling1D, UpSampling2D, UpSampling3D, ZeroPadding1D, ZeroPadding2D, ZeroPadding3D
- **Pooling Layers**: MaxPooling1D, MaxPooling2D, AveragePooling1D, AveragePooling2D, GlobalMaxPooling1D, GlobalAveragePooling1D, GlobalMaxPooling2D, GlobalAveragePooling2D, GlobalMaxPooling3D,GlobalAveragePooling3D
- **Recurrent Layers**: SimpleRNN, GRU, LSTM, SimpleRNNCell, GRUCell, LSTMCell
- **Embedding Layers**: Embedding
- **Merge Layers**: Add, Subtract, Multiply, Average, Maximum, Minimum, Concatenate, Dot
- **Advanced Activation Layers**: LeakyReLU, PReLU, ELU, Softmax, ReLU
- **Normalization Layers**: BatchNormalization
- **Noise Layers**: GaussianNoise, GaussianDropout, AlphaDropout
- **Layer Wrappers**: TimeDistributed, Bidirectional

ToDo
****
- **Core Layers**: Lambda, Masking
- **Convolution Layers**: SeparableConv1D, SeparableConv2D, DepthwiseConv2D, Conv2DTranspose, Conv3DTranspose
- **Pooling Layers**: MaxPooling3D, AveragePooling3D
- **Locally Connected Layers**: LocallyConnected1D, LocallyConnected2D
- **Recurrent Layers**: ConvLSTM2D, ConvLSTM2DCell
- **Merge Layers**: Broadcasting merge between different sizes
- **Misc**: models made from submodels

Contribute
**********

- Documentation: ``_
- Issue Tracker: ``_
- Source Code: ``_

License
*******

The project is licensed under the LGPLv3 license.

.. |Build-Status| image:: https://travis-ci.org/f0uriest/keras2c.svg?branch=master
:target: https://travis-ci.org/f0uriest/keras2c
:alt: Build Status
.. |Codecov| image:: https://codecov.io/gh/f0uriest/keras2c/branch/master/graph/badge.svg
:target: https://codecov.io/gh/f0uriest/keras2c
:alt: Code Coverage
.. |License| image:: https://img.shields.io/github/license/f0uriest/keras2c
:target: https://github.com/f0uriest/keras2c/blob/master/LICENSE
:alt: License: LGPLv3
.. |DOI| image:: https://zenodo.org/badge/193152058.svg
:target: https://zenodo.org/badge/latestdoi/193152058
:alt: Please Cite Keras2c!