#神经网络 #API绑定 #系统调用 #输入输出

wasin-nn-safe

为wasi-nn系统调用提供高级且安全的Rust API绑定

2个不稳定版本

0.1.0 2023年6月15日
0.0.5 2023年4月15日
0.0.4 2023年3月21日

#589 in WebAssembly

自定义许可

2MB
591

wasi-nn-safe

CI status crates.io status doc.rs status

简介

此库提供了一些方便且安全的包装API,用于替换不安全的wasi-nn API。

[dependencies]
wasi-nn-safe = "0.1"

快速开始

use wasi_nn_safe::{ExecutionTarget, GraphBuilder, GraphEncoding, TensorType};

fn test(model_path: &'static str) -> Result<(), wasi_nn_safe::Error> {
    // prepare input and output buffer.
    let input = vec![0f32; 224 * 224 * 3];
    let input_dim = vec![1, 224, 224, 3];
    // the input and output buffer can be any sized type, such as u8, f32, etc.
    let mut output_buffer = vec![0f32; 1001];

    // build a tflite graph from file.
    let graph = GraphBuilder::new(GraphEncoding::TensorflowLite, ExecutionTarget::CPU)
        .build_from_files([model_path])?;
    // init graph execution context for this graph.
    let mut ctx = graph.init_execution_context()?;
    // set input
    ctx.set_input(0, TensorType::F32, &input_dim, &input)?;
    // do inference
    ctx.compute()?;
    // copy output to buffer
    let output_bytes = ctx.get_output(0, &mut output_buffer)?;

    assert_eq!(output_bytes, output_buffer.len() * std::mem::size_of::<f32>());
    Ok(())
}

注意

此crate是实验性的,将根据上游wasi-nn规范进行更改。

当前版本基于git提交 0f77c48ec195748990ff67928a4b3eef5f16c2de

许可

本项目采用Apache 2.0许可。有关详细信息,请参阅LICENSE

依赖关系