Skip to main content

Travis CI Build Status Appveyor Build status

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

MIT licensed

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.DecisionTreeClassifier
  • eml_net: sklearn.MultiLayerPerceptron, Keras.Sequential with fully-connected layers
  • eml_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

  1. Train your model in Python
from sklearn.ensemble import RandomForestClassifier
estimator = RandomForestClassifier(n_estimators=10, max_depth=10)
estimator.fit(X_train, Y_train)
...
  1. Convert it to C code
import emlearn
cmodel = emlearn.convert(estimator, method='inline')
cmodel.save(file='sonar.h')
  1. 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

Metadata

Release files for emlearn 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for emlearn 0.8.1
File Size Uploaded
emlearn-0.8.1.tar.gz 35.0 kB Details

Release files / emlearn-0.8.1.tar.gz

Download URL emlearn-0.8.1.tar.gz
Size 35.0 kB
Tags Source
SHA-256 checksum
How to use checksums
283da89ef890e6f1b3f31b66dd4332b89aecb9ff3811f0c80f989ba6ba97296c
BLAKE2b-256 checksum
How to use checksums
dbf44b63b598b9744662857eba9f8486bace31054ad0f81890f8d3b94afc55e0
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

0.23.1

1 release file

0.23.0

1 release file

0.22.0

1 release file

0.21.2

1 release file

0.21.1

1 release file

0.21.0

1 release file

0.20.4

1 release file

0.20.3

1 release file

0.20.2

1 release file

0.20.1

1 release file

0.19.3

1 release file

0.19.2

1 release file

0.19.1

1 release file

0.18.1

1 release file

0.18.0

1 release file

0.17.2

1 release file

0.17.1

1 release file

0.17.0

1 release file

0.16.5

1 release file

0.16.3

1 release file

0.14.1

1 release file

0.14.0

1 release file

0.13.1

1 release file

0.12.2

1 release file

0.12.1

1 release file

0.12.0

1 release file

0.11.6

1 release file

0.11.5

1 release file

0.11.3

1 release file

0.11.2

1 release file

0.11.0

1 release file

0.10.1

1 release file

This release

0.8.1 This release

1 release file

0.8.0

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page