emlearn
Machine learning for microcontroller and embedded systems. Train in Python, then do inference on any device with a C99 compiler.
Key features
Embedded-friendly Inference
- Portable C99 code
- No libc required
- No dynamic allocations
- Support integer/fixed-point math
- Single header file include
Convenient Training
- Using Python with scikit-learn or Keras
- The generated C classifier is also accessible in Python
Can be used as an open source alternative to MATLAB Classification Trees,
Decision Trees using MATLAB Coder for C/C++ code generation.
fitctree, fitcensemble, TreeBagger, ClassificationEnsemble, CompactTreeBagger
Status
Minimally useful
Classifiers:
eml_trees: sklearn.RandomForestClassifier, sklearn.ExtraTreesClassifier, sklearn.DecisionTreeClassifiereml_net: sklearn.MultiLayerPerceptron, Keras.Sequential with fully-connected layerseml_bayes: sklearn.GaussianNaiveBayes
Feature extraction:
eml_audio: Melspectrogram
Tested running on AVR Atmega, ESP8266 and Linux.
Installing
Install from PyPI
pip install --user emlearn
Usage
- Train your model in Python
from sklearn.ensemble import RandomForestClassifier
estimator = RandomForestClassifier(n_estimators=10, max_depth=10)
estimator.fit(X_train, Y_train)
...
- Convert it to C code
import emlearn
cmodel = emlearn.convert(estimator, method='inline')
cmodel.save(file='sonar.h')
- Use the C code
#include "sonar.h"
const int32_t length = 60;
int32_t values[length] = { ... };
const int32_t predicted_class = sonar_predict(values, length):
For full example code, see examples/digits.py and emlearn.ino
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
emlearn-0.8.1.tar.gz
(35.0 kB
view details)
File details
Details for the file emlearn-0.8.1.tar.gz.
File metadata
- Download URL: emlearn-0.8.1.tar.gz
- Upload date:
- Size: 35.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
283da89ef890e6f1b3f31b66dd4332b89aecb9ff3811f0c80f989ba6ba97296c
|
|
| MD5 |
d85113a3c697a208f9d11cff86950bf5
|
|
| BLAKE2b-256 |
dbf44b63b598b9744662857eba9f8486bace31054ad0f81890f8d3b94afc55e0
|