Crate menoh

Crate menoh 

Source
Expand description

Rust binding for Menoh

§Example

fn main() -> Result<(), menoh::Error> {
    let mut model = menoh::Builder::from_onnx("MLP.onnx")?
        .add_input::<f32>("input", &[2, 3])?
        .add_output("fc2")?
        .build("mkldnn", "")?;

    let (in_dims, in_buf) = model.get_variable_mut::<f32>("input")?;
    in_buf.copy_from_slice(&[0., 1., 2., 3., 4., 5.]);
    println!("in:");
    println!("    dims: {:?}", in_dims);
    println!("    buf: {:?}", in_buf);

    model.run()?;

    let (out_dims, out_buf) = model.get_variable::<f32>("fc2")?;
    println!("out:");
    println!("    dims: {:?}", out_dims);
    println!("    buf: {:?}", out_buf);
    Ok(())
}

§Usage

§1. Build a Model.

let mut model = menoh::Builder::from_onnx("MLP.onnx")?
// register `"input"` as input
// and specify its type (`f32`) and shape (`&[2, 3]`).
    .add_input::<f32>("input", &[2, 3])?
// register `"fc2"` as output.
    .add_output("fc2")?
// specify backend (`"mkldnn"`) and its configuration (`""`).
    .build("mkldnn", "")?;

Instead of Builder, we can use a combination of some low-level APIs.

let mut model_data = menoh::ModelData::from_onnx("MLP.onnx")?;

let mut vpt_builder = menoh::VariableProfileTableBuilder::new()?;
vpt_builder.add_input::<f32>("input", &[2, 3])?;
vpt_builder.add_output("fc2")?;
let vpt = vpt_builder.build(&model_data)?;

model_data.optimize(&vpt)?;
let model_builder = menoh::ModelBuilder::new(&vpt)?;
let mut model = model_builder.build(model_data, "mkldnn", "")?;

§2. Set data to input variable(s).

// fetch a read/write view of a variable.
let (in_dims, in_buf) = model.get_variable_mut::<f32>("input")?;
// set data to the variable.
in_buf.copy_from_slice(&[0., 1., 2., 3., 4., 5.]);

§3. Execute computation.

model.run()?;

§4. Fetch the result(s).

// fetch a read-only view of a variable.
let (out_dims, out_buf) = model.get_variable::<f32>("fc2")?;
// use the data (e.g. print them).
println!("{:?}", out_buf);

Structs§

Builder
Helper to build Model.
Model
Model, which executes computation.
ModelBuilder
Builder for Model.
ModelData
Container of operators and values of constant variables.
VariableProfileTable
Container of variable profiles (type, shape and flag of input/output).
VariableProfileTableBuilder
Builder for VariableProfileTable.

Enums§

Error

Traits§

Dtype
Representation of scalar types supported by Menoh.