Machine learning for microcontrollers and embedded systems
Project description
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
Project details
Release history Release notifications | RSS feed
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.7.0.tar.gz
(32.9 kB
view hashes)