pub enum PrimitiveTransposeInput<Op: GraphOperation> {
Residual(ValueKey<Op>),
Linear {
key: ValueKey<Op>,
primal: Option<ValueKey<Op>>,
},
}Expand description
Input reference passed to a primitive transpose rule.
Linearized graphs contain both residual values and values that belong to
the tangent flow. A transpose rule may freely use residual values as
ordinary graph operands, but tangent-flow values must not be retained as
tensor-valued operands in the transposed graph. When a tangent-flow value is
the tangent of a known primal value, primal carries that counterpart for
metadata or runtime-shape use by downstream primitive sets.
Variants§
Residual(ValueKey<Op>)
Value that is independent of the differentiated tangent flow.
Linear
Value on the differentiated tangent flow.
Implementations§
Source§impl<Op: GraphOperation> PrimitiveTransposeInput<Op>
impl<Op: GraphOperation> PrimitiveTransposeInput<Op>
Sourcepub fn primal(&self) -> Option<&ValueKey<Op>>
pub fn primal(&self) -> Option<&ValueKey<Op>>
Return the corresponding primal key for a linear input, when known.
Sourcepub fn as_residual_value(&self) -> Option<PrimitiveValue<Op>>
pub fn as_residual_value(&self) -> Option<PrimitiveValue<Op>>
Return this input as a value usable by rule builders when it is residual.
Trait Implementations§
Source§impl<Op: Clone + GraphOperation> Clone for PrimitiveTransposeInput<Op>
impl<Op: Clone + GraphOperation> Clone for PrimitiveTransposeInput<Op>
Source§fn clone(&self) -> PrimitiveTransposeInput<Op>
fn clone(&self) -> PrimitiveTransposeInput<Op>
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<Op: Debug + GraphOperation> Debug for PrimitiveTransposeInput<Op>
impl<Op: Debug + GraphOperation> Debug for PrimitiveTransposeInput<Op>
impl<Op: Eq + GraphOperation> Eq for PrimitiveTransposeInput<Op>
Source§impl<Op: Hash + GraphOperation> Hash for PrimitiveTransposeInput<Op>
impl<Op: Hash + GraphOperation> Hash for PrimitiveTransposeInput<Op>
Source§impl<Op: PartialEq + GraphOperation> PartialEq for PrimitiveTransposeInput<Op>
impl<Op: PartialEq + GraphOperation> PartialEq for PrimitiveTransposeInput<Op>
impl<Op: PartialEq + GraphOperation> StructuralPartialEq for PrimitiveTransposeInput<Op>
Auto Trait Implementations§
impl<Op> Freeze for PrimitiveTransposeInput<Op>where
<Op as GraphOperation>::InputKey: Freeze,
impl<Op> RefUnwindSafe for PrimitiveTransposeInput<Op>where
<Op as GraphOperation>::InputKey: RefUnwindSafe,
Op: RefUnwindSafe,
impl<Op> Send for PrimitiveTransposeInput<Op>
impl<Op> Sync for PrimitiveTransposeInput<Op>
impl<Op> Unpin for PrimitiveTransposeInput<Op>where
<Op as GraphOperation>::InputKey: Unpin,
impl<Op> UnsafeUnpin for PrimitiveTransposeInput<Op>where
<Op as GraphOperation>::InputKey: UnsafeUnpin,
impl<Op> UnwindSafe for PrimitiveTransposeInput<Op>
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