1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
use crate::internal::*;
#[macro_use]
pub mod helpers;
#[macro_use]
pub mod rules;
mod analyser;
mod fact;
mod factoid;
mod model;
mod ops;
mod optim;
pub use tract_core::dim::TDim;
pub use self::fact::InferenceFact;
pub use self::factoid::*;
pub use self::model::InferenceModelExt;
pub use self::ops::InferenceOp;
pub use self::rules::expr::IntoExp;
pub use self::rules::expr::ToDimExp;
pub use self::rules::InferenceResult;
pub use self::rules::InferenceRulesOp;
pub use self::rules::Solver;
pub use self::rules::TensorProxy;
pub use wrap;
pub fn check_input_arity(inputs: &[TensorProxy], expected: usize) -> TractResult<()> {
if inputs.len() != expected {
bail!("Wrong input number. Rules expect {}, node has {}.", expected, inputs.len())
} else {
Ok(())
}
}
pub fn check_output_arity(outputs: &[TensorProxy], expected: usize) -> TractResult<()> {
if outputs.len() != expected {
bail!("Wrong output number. Rules expect {}, node has {}.", expected, outputs.len())
} else {
Ok(())
}
}
pub type InferenceModel = ModelImpl<InferenceFact, Box<dyn InferenceOp>>;
pub type InferenceNode = BaseNode<InferenceFact, Box<dyn InferenceOp>>;
pub type InferenceModelPatch = ModelPatch<InferenceFact, Box<dyn InferenceOp>>;
pub type InferenceSimplePlan<M> = SimplePlan<InferenceFact, Box<dyn InferenceOp>, M>;
pub type InferenceSimpleState<M, P> = SimpleState<InferenceFact, Box<dyn InferenceOp>, M, P>;