pub struct ExprGraph { /* private fields */ }Expand description
Expression graph with optimized performance.
Forward evaluation is pure; reuse an EvalTape to cache intermediates explicitly.
Implementations§
Source§impl ExprGraph
impl ExprGraph
pub fn new() -> Self
pub fn input(&mut self, name: String) -> NodeId
pub fn constant(&mut self, value: Float) -> NodeId
pub fn operation<I>(&mut self, op: Op, inputs: I) -> NodeId
pub fn output(&mut self, node: NodeId) -> NodeId
Sourcepub fn fwd_tape(&self) -> EvalTape
pub fn fwd_tape(&self) -> EvalTape
Allocate a forward-mode tape sized for this graph. Reuse it to avoid allocations between runs.
Sourcepub fn tape(&self) -> ReverseTape
pub fn tape(&self) -> ReverseTape
Allocate a reverse-mode tape sized for this graph.
pub fn reverse_tape(&self) -> ReverseTape
pub fn input_names(&self) -> &[String]
Sourcepub fn eval_fwd(&self, inputs: &[Float]) -> Vec<(Float, Vec<Float>)>
pub fn eval_fwd(&self, inputs: &[Float]) -> Vec<(Float, Vec<Float>)>
Pure forward evaluation that allocates its own tape. Suitable for single-shot calls. Returns a value and per-input gradient vector for each output.
Sourcepub fn eval_fwd_with_tape(
&self,
inputs: &[Float],
tape: &mut EvalTape,
) -> Vec<(Float, Vec<Float>)>
pub fn eval_fwd_with_tape( &self, inputs: &[Float], tape: &mut EvalTape, ) -> Vec<(Float, Vec<Float>)>
Forward evaluation that reuses the provided tape to cache intermediates. Returns a value and per-input gradient vector for each output.
pub fn eval_fwd_one(&self, inputs: &[Float]) -> (Float, Vec<Float>)
pub fn eval_fwd_one_with_tape( &self, inputs: &[Float], tape: &mut EvalTape, ) -> (Float, Vec<Float>)
pub fn eval_fwd_named( &self, inputs: &[Float], ) -> Vec<(Float, Vec<(String, Float)>)>
pub fn eval_fwd_named_with_tape( &self, inputs: &[Float], tape: &mut EvalTape, ) -> Vec<(Float, Vec<(String, Float)>)>
Sourcepub fn eval(&self, inputs: &[Float]) -> Vec<(Float, Vec<Float>)>
pub fn eval(&self, inputs: &[Float]) -> Vec<(Float, Vec<Float>)>
Reverse-mode evaluation that allocates its own tape. Suitable for single-shot calls. Returns a value and per-input gradient vector for each output.
Sourcepub fn eval_with_tape(
&self,
inputs: &[Float],
tape: &mut ReverseTape,
) -> Vec<(Float, Vec<Float>)>
pub fn eval_with_tape( &self, inputs: &[Float], tape: &mut ReverseTape, ) -> Vec<(Float, Vec<Float>)>
Reverse-mode evaluation that reuses the provided tape to cache intermediates. Returns a value and per-input gradient vector for each output.
Sourcepub fn eval_for(
&self,
inputs: &[Float],
outputs: &[NodeId],
) -> Vec<(Float, Vec<Float>)>
pub fn eval_for( &self, inputs: &[Float], outputs: &[NodeId], ) -> Vec<(Float, Vec<Float>)>
Reverse-mode evaluation for a selected set of outputs.
Sourcepub fn eval_for_with_tape(
&self,
inputs: &[Float],
outputs: &[NodeId],
tape: &mut ReverseTape,
) -> Vec<(Float, Vec<Float>)>
pub fn eval_for_with_tape( &self, inputs: &[Float], outputs: &[NodeId], tape: &mut ReverseTape, ) -> Vec<(Float, Vec<Float>)>
Reverse-mode evaluation for a selected set of outputs with a reusable tape.