pub struct If {
pub then_body: InferenceModel,
pub else_body: InferenceModel,
/* private fields */
}Fields§
§then_body: InferenceModel§else_body: InferenceModelImplementations§
Trait Implementations§
Source§impl EvalOp for If
impl EvalOp for If
fn is_stateless(&self) -> bool
fn eval(&self, inputs: TVec<TValue>) -> TractResult<TVec<TValue>>
fn eval_with_session( &self, node_id: usize, session: &SessionState, inputs: SmallVec<[TValue; 4]>, ) -> Result<SmallVec<[TValue; 4]>, Error>
fn state( &self, session: &mut SessionState, node_id: usize, ) -> Result<Option<Box<dyn OpState>>, Error>
Source§impl InferenceOp for If
impl InferenceOp for If
Source§fn infer_facts(
&mut self,
inputs: TVec<&InferenceFact>,
outputs: TVec<&InferenceFact>,
observed: TVec<&InferenceFact>,
) -> TractResult<(TVec<InferenceFact>, TVec<InferenceFact>, TVec<InferenceFact>)>
fn infer_facts( &mut self, inputs: TVec<&InferenceFact>, outputs: TVec<&InferenceFact>, observed: TVec<&InferenceFact>, ) -> TractResult<(TVec<InferenceFact>, TVec<InferenceFact>, TVec<InferenceFact>)>
Infer properties about inputs and output tensors. This method does not
need to deal with the “trivial” stateless op with fully determined
inputs cases. Read more
fn nboutputs(&self) -> TractResult<usize>
Source§fn to_typed(
&self,
_source: &InferenceModel,
node: &InferenceNode,
target: &mut TypedModel,
mapping: &HashMap<OutletId, OutletId>,
) -> TractResult<TVec<OutletId>>
fn to_typed( &self, _source: &InferenceModel, node: &InferenceNode, target: &mut TypedModel, mapping: &HashMap<OutletId, OutletId>, ) -> TractResult<TVec<OutletId>>
Called during translation to TypedModel.
Source§fn infer(
&mut self,
inputs: SmallVec<[&InferenceFact; 4]>,
outputs: SmallVec<[&InferenceFact; 4]>,
observed: SmallVec<[&InferenceFact; 4]>,
) -> Result<(SmallVec<[InferenceFact; 4]>, SmallVec<[InferenceFact; 4]>, SmallVec<[InferenceFact; 4]>), Error>
fn infer( &mut self, inputs: SmallVec<[&InferenceFact; 4]>, outputs: SmallVec<[&InferenceFact; 4]>, observed: SmallVec<[&InferenceFact; 4]>, ) -> Result<(SmallVec<[InferenceFact; 4]>, SmallVec<[InferenceFact; 4]>, SmallVec<[InferenceFact; 4]>), Error>
Infers properties about the input and output tensors. Read more
Source§fn observe_outlets(
&self,
_model: &Graph<InferenceFact, Box<dyn InferenceOp>>,
_node: &Node<InferenceFact, Box<dyn InferenceOp>>,
) -> Result<Vec<OutletId>, Error>
fn observe_outlets( &self, _model: &Graph<InferenceFact, Box<dyn InferenceOp>>, _node: &Node<InferenceFact, Box<dyn InferenceOp>>, ) -> Result<Vec<OutletId>, Error>
Allow an op to specify a supplementary list of outlets facts that
will trigger inference again.
Source§fn incorporate(
&self,
model: &Graph<InferenceFact, Box<dyn InferenceOp>>,
node: &Node<InferenceFact, Box<dyn InferenceOp>>,
) -> Result<Option<ModelPatch<InferenceFact, Box<dyn InferenceOp>>>, Error>
fn incorporate( &self, model: &Graph<InferenceFact, Box<dyn InferenceOp>>, node: &Node<InferenceFact, Box<dyn InferenceOp>>, ) -> Result<Option<ModelPatch<InferenceFact, Box<dyn InferenceOp>>>, Error>
Early pass on inference model, after analyse, but before translation to
typed network. Meant to deal with some framework idiosyncrasies that
manifest with temporaries nodes that can run some form of inference but
require refactoring the network before it can be evaluated. Read more
Auto Trait Implementations§
impl Freeze for If
impl !RefUnwindSafe for If
impl Send for If
impl Sync for If
impl Unpin for If
impl !UnwindSafe for If
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more