[−][src]Crate menoh
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, which executes computation. |
ModelBuilder | Builder for |
ModelData | Container of operators and values of constant variables. |
VariableProfileTable | Container of variable profiles (type, shape and flag of input/output). |
VariableProfileTableBuilder | Builder for |
Enums
Error |
Traits
Dtype | Representation of scalar types supported by Menoh. |