pub struct NextIteration { /* private fields */ }Implementations§
Source§impl NextIteration
impl NextIteration
Sourcepub fn new(name: String, role: NextIterationRole) -> Self
pub fn new(name: String, role: NextIterationRole) -> Self
Constructs a new NextIteration.
Trait Implementations§
Source§impl Clone for NextIteration
impl Clone for NextIteration
Source§fn clone(&self) -> NextIteration
fn clone(&self) -> NextIteration
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for NextIteration
impl Debug for NextIteration
impl Eq for NextIteration
Source§impl EvalOp for NextIteration
impl EvalOp for NextIteration
Source§fn eval_out_of_plan(
&self,
_inputs: TVec<TValue>,
) -> TractResult<Option<TVec<TValue>>>
fn eval_out_of_plan( &self, _inputs: TVec<TValue>, ) -> TractResult<Option<TVec<TValue>>>
Evaluate with no plan around the node – const folding, shape inference,
tests – or
None when there is no answer without one, because the op
reads the context or keeps state between turns. Required, with no default:
an op answering Some has produced the value from inputs alone, by
construction, so the claim and the act cannot disagree. Write it with
op_out_of_plan!() or not_out_of_plan!().Source§fn state(&self, _ctx: &EvalContext<'_>) -> TractResult<Option<Box<dyn OpState>>>
fn state(&self, _ctx: &EvalContext<'_>) -> TractResult<Option<Box<dyn OpState>>>
Build this node’s inter-turn state, or
None when the op keeps nothing
between turns. This is what decides whether the plan holds an
OpState for the node; there is no separate predicate.Source§fn eval(
&self,
ctx: &EvalContext<'_>,
inputs: SmallVec<[TValue; 4]>,
) -> Result<SmallVec<[TValue; 4]>, Error>
fn eval( &self, ctx: &EvalContext<'_>, inputs: SmallVec<[TValue; 4]>, ) -> Result<SmallVec<[TValue; 4]>, Error>
Evaluate the op.
ctx says where and when: the turn’s symbols, the shared
resources a handler installed, and (session, node_id) so an op can key
whatever scratch it manages for itself. Ops carrying state that must
survive from one turn to the next build it in EvalOp::state instead,
and evaluate through OpState::eval.Source§fn drop_session(&self, session: SessionId, node_id: usize)
fn drop_session(&self, session: SessionId, node_id: usize)
Release whatever the op manages for
session, called for every node as a
state is dropped. Ops keeping scratch keyed by (session, node_id) must
implement it, or that scratch outlives the session that made it.Source§impl Hash for NextIteration
impl Hash for NextIteration
Source§impl InferenceRulesOp for NextIteration
impl InferenceRulesOp for NextIteration
Source§fn rules<'r, 'p: 'r, 's: 'r>(
&'s self,
_s: &mut Solver<'r>,
inputs: &'p [TensorProxy],
outputs: &'p [TensorProxy],
) -> InferenceResult
fn rules<'r, 'p: 'r, 's: 'r>( &'s self, _s: &mut Solver<'r>, inputs: &'p [TensorProxy], outputs: &'p [TensorProxy], ) -> InferenceResult
Registers the inference rules of the operator.
fn as_op(&self) -> &dyn Op
fn as_op_mut(&mut self) -> &mut dyn Op
fn to_typed( &self, source: &Graph<InferenceFact, Box<dyn InferenceOp>>, node: &Node<InferenceFact, Box<dyn InferenceOp>>, target: &mut Graph<TypedFact, Box<dyn TypedOp>>, mapping: &HashMap<OutletId, OutletId>, ) -> Result<SmallVec<[OutletId; 4]>, Error>
fn nboutputs(&self) -> Result<usize, Error>
fn incorporate( &self, model: &Graph<InferenceFact, Box<dyn InferenceOp>>, node: &Node<InferenceFact, Box<dyn InferenceOp>>, ) -> Result<Option<ModelPatch<InferenceFact, Box<dyn InferenceOp>>>, Error>
Source§impl Op for NextIteration
impl Op for NextIteration
fn name(&self) -> StaticName
fn as_typed(&self) -> Option<&dyn TypedOp>
Source§fn validation(&self) -> Validation
fn validation(&self) -> Validation
The kind of accuracy check that should be performed on operation when
testing them.
Source§impl PartialEq for NextIteration
impl PartialEq for NextIteration
impl StructuralPartialEq for NextIteration
Auto Trait Implementations§
impl Freeze for NextIteration
impl RefUnwindSafe for NextIteration
impl Send for NextIteration
impl Sync for NextIteration
impl Unpin for NextIteration
impl UnsafeUnpin for NextIteration
impl UnwindSafe for NextIteration
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> CloneAny for T
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>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn 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>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which 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)
Converts
&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)
Converts
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<O> InferenceOp for Owhere
O: InferenceRulesOp + Op,
impl<O> InferenceOp for Owhere
O: InferenceRulesOp + Op,
Source§fn infer_facts(
&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_facts( &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>
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) -> Result<usize, Error>
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 as_op_mut(&mut self) -> &mut (dyn Op + 'static)
fn as_op_mut(&mut self) -> &mut (dyn Op + 'static)
Reinterpret the InferenceOp as an Op, mutably.
Source§fn to_typed(
&self,
source: &Graph<InferenceFact, Box<dyn InferenceOp>>,
node: &Node<InferenceFact, Box<dyn InferenceOp>>,
target: &mut Graph<TypedFact, Box<dyn TypedOp>>,
mapping: &HashMap<OutletId, OutletId>,
) -> Result<SmallVec<[OutletId; 4]>, Error>
fn to_typed( &self, source: &Graph<InferenceFact, Box<dyn InferenceOp>>, node: &Node<InferenceFact, Box<dyn InferenceOp>>, target: &mut Graph<TypedFact, Box<dyn TypedOp>>, mapping: &HashMap<OutletId, OutletId>, ) -> Result<SmallVec<[OutletId; 4]>, Error>
Called during translation to TypedModel.
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
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§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