Skip to content

kadu-v/berrylite-micro

Repository files navigation

BerryLite Micro

build

BerryLite Micro is the interpreter of TensorFlow model implemented entirely in Rust. The interpreter is to execute TensorFlow Lite models on micro controllers, and provides APIs similar with TensorFlow Micro's APIs.

How to use

You should add the following code to your Cargo.toml.

berrylite = { git = "[email protected]:kadu-v/berrylite.git" }

If you want to use this crate on no_std, you should enable no_std feature.

berrylite = { git = "[email protected]:kadu-v/berrylite.git", features = ["no_std"] }

Example

This is the hello_world example that predicts sin cave. If you want to know more examples, you can find other examples in examples directory.

const BUFFER: &[u8; 3164] = include_bytes!("../resources/models/hello_world_float.tflite");
const ARENA_SIZE: usize = 10 * 1024;
static mut ARENA: [u8; ARENA_SIZE] = [0; ARENA_SIZE];

fn predict(input: f32) -> Result<f32> {
    let model = tflite::root_as_model(BUFFER).unwrap();

    let mut allocator = unsafe { BumpArenaAllocator::new(&mut ARENA) };

    let mut op_resolver = BLiteOpResolver::<1, f32, _>::new();
    op_resolver.add_op(OpFullyConnected::fully_connected())?;

    let mut interpreter = BLiteInterpreter::new(&mut allocator, &op_resolver, &model)?;

  interpreter.input.data[0] = input;
    interpreter.invoke()?;

    let output = interpreter.output;

    Ok(output.data[0])
}

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages