#tensorflow #neural-network

tract-core

小巧、实用、独立,支持 TensorFlow 和 ONNX 推理

134 个版本

0.21.6 2024年7月24日
0.21.4 2024年4月23日
0.21.2 2024年3月29日
0.20.22 2023年11月28日
0.1.1 2018年11月2日

#1017 in 机器学习

Download history 8228/week @ 2024-04-26 4085/week @ 2024-05-03 5973/week @ 2024-05-10 4287/week @ 2024-05-17 6143/week @ 2024-05-24 6459/week @ 2024-05-31 8921/week @ 2024-06-07 6474/week @ 2024-06-14 8905/week @ 2024-06-21 5058/week @ 2024-06-28 9190/week @ 2024-07-05 5520/week @ 2024-07-12 11197/week @ 2024-07-19 6648/week @ 2024-07-26 4965/week @ 2024-08-02 4435/week @ 2024-08-09

每月下载量 27,930
用于 38 个crate(直接使用8个)

MIT/Apache

1.5MB
39K SLoC

Tract

小巧、实用、独立,可移植的 TensorFlow 和 ONNX 推理。

示例

use tract_core::internal::*;

// build a simple model that just add 3 to each input component
let mut model = TypedModel::default();

let input_fact = f32::fact(&[3]);
let input = model.add_source("input", input_fact).unwrap();
let three = model.add_const("three".to_string(), tensor1(&[3f32])).unwrap();
let add = model.wire_node("add".to_string(),
    tract_core::ops::math::add(),
    [input, three].as_ref()
    ).unwrap();

model.auto_outputs().unwrap();

// We build an execution plan. Default inputs and outputs are inferred from
// the model graph.
let plan = SimplePlan::new(&model).unwrap();

// run the computation.
let input = tensor1(&[1.0f32, 2.5, 5.0]);
let mut outputs = plan.run(tvec![input.into()]).unwrap();

// take the first and only output tensor
let mut tensor = outputs.pop().unwrap();

assert_eq!(tensor, tensor1(&[4.0f32, 5.5, 8.0]).into());

虽然从 Rust 代码创建模型对测试库很有用,但实际应用通常使用 tract-tensorflow 或 tract-onnx crate 加载 TensorFlow 或 ONNX 模型。

依赖项

~12–20MB
~372K SLoC