[][src]Crate tract_core

Tract

Tiny, no-nonsense, self contained, portable SharedTensor and ONNX inference.

Example

use tract_core::*;
use tract_core::model::*;
use tract_core::model::dsl::*;

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

let input = model.add_source("input").unwrap();
let three = model.add_const("three".to_string(), 3f32.into()).unwrap();
let add = model.add_node("add".to_string(),
    Box::new(tract_core::ops::math::Add::default())).unwrap();

model.add_edge(OutletId::new(input, 0), InletId::new(add, 0)).unwrap();
model.add_edge(OutletId::new(three, 0), InletId::new(add, 1)).unwrap();

// we build an execution plan. default input and output are inferred from
// the model graph
let plan = SimplePlan::new(&model).unwrap();

// run the computation.
let input = ndarray::arr1(&[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();

// unwrap it as array of f32
let tensor = tensor.to_array_view::<f32>().unwrap();
assert_eq!(tensor, ndarray::arr1(&[4.0, 5.5, 8.0]).into_dyn());

While creating a model from Rust code is usefull for testing the library, real-life use-cases will usually load a SharedTensor or ONNX model using tract-tf or tract-onnx crates.

Re-exports

pub extern crate ndarray;
pub use crate::errors::*;
pub use crate::analyser::types::TensorFact;
pub use crate::datum::DatumType;
pub use crate::dim::TDim;
pub use crate::model::Model;
pub use crate::model::Node;
pub use crate::model::TVec;
pub use crate::plan::SimplePlan;
pub use crate::plan::SimpleState;
pub use crate::tensor::SharedTensor;
pub use crate::tensor::Tensor;

Modules

analyser
broadcast
context
datum

Tensor is the equivalent of SharedTensor Tensor.

dim
errors

error_chain generated types

macros
model
ops

SharedTensorFlow Ops

optim
plan
pulse
tensor

Tensor is the equivalent of SharedTensor Tensor.

Macros

args_1
args_2
args_3
args_4
args_5
assert_backward

Asserts that backward inference results work as expected.

assert_close
assert_forward

Asserts that forward inference results work as expected.

boxed_new
dimfact

Constructs a dimension fact.

dispatch_datum
dispatch_floatlike
dispatch_numbers
element_bin
impl_op_same_as
shapefact

Constructs a shape fact.

tvec
typefact

Constructs a type fact.

unwrap_or_none

Tries to unwrap an option, or returns Ok(None) otherwise.

valuefact

Constructs an value fact.

wrap

Traits

ToTract
Tractify