Trait TracedModule

Source
pub trait TracedModule<X>: Module<X> {
    type Trace;

    // Required method
    fn traced_forward(
        &self,
        x: X,
    ) -> Result<(<Self as Module<X>>::Output, Self::Trace), Error>;
}
Expand description

Some sequential computation that consumes Input and produces Module::Output, but also produces artifacts describing the execution that can later be used during backprop.

Neural-network layers implement this trait.

A supertrait of Module.

Required Associated Types§

Source

type Trace

The type that this unit produces to describe intermediate state.

This is typically the input to the module.

Required Methods§

Source

fn traced_forward( &self, x: X, ) -> Result<(<Self as Module<X>>::Output, Self::Trace), Error>

Same as Module::forward, except intermediate computations that are needed for backprop are returned.

Implementations on Foreign Types§

Source§

impl<Input, M1: TracedModule<Input>> TracedModule<Input> for (M1,)

Source§

type Trace = (<M1 as TracedModule<Input>>::Trace,)

Source§

fn traced_forward( &self, x: Input, ) -> Result<(<Self as Module<Input>>::Output, Self::Trace), Error>

Source§

impl<Input, M2: TracedModule<M1::Output>, M1: TracedModule<Input>> TracedModule<Input> for (M1, M2)

Source§

type Trace = (<M1 as TracedModule<Input>>::Trace, <M2 as TracedModule<<M1 as Module<Input>>::Output>>::Trace)

Source§

fn traced_forward( &self, x: Input, ) -> Result<(<Self as Module<Input>>::Output, Self::Trace), Error>

Source§

impl<Input, M3: TracedModule<M2::Output>, M2: TracedModule<M1::Output>, M1: TracedModule<Input>> TracedModule<Input> for (M1, M2, M3)

Source§

type Trace = (<M1 as TracedModule<Input>>::Trace, <M2 as TracedModule<<M1 as Module<Input>>::Output>>::Trace, <M3 as TracedModule<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Trace)

Source§

fn traced_forward( &self, x: Input, ) -> Result<(<Self as Module<Input>>::Output, Self::Trace), Error>

Source§

impl<Input, M4: TracedModule<M3::Output>, M3: TracedModule<M2::Output>, M2: TracedModule<M1::Output>, M1: TracedModule<Input>> TracedModule<Input> for (M1, M2, M3, M4)

Source§

type Trace = (<M1 as TracedModule<Input>>::Trace, <M2 as TracedModule<<M1 as Module<Input>>::Output>>::Trace, <M3 as TracedModule<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Trace, <M4 as TracedModule<<M3 as Module<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Output>>::Trace)

Source§

fn traced_forward( &self, x: Input, ) -> Result<(<Self as Module<Input>>::Output, Self::Trace), Error>

Source§

impl<Input, M5: TracedModule<M4::Output>, M4: TracedModule<M3::Output>, M3: TracedModule<M2::Output>, M2: TracedModule<M1::Output>, M1: TracedModule<Input>> TracedModule<Input> for (M1, M2, M3, M4, M5)

Source§

type Trace = (<M1 as TracedModule<Input>>::Trace, <M2 as TracedModule<<M1 as Module<Input>>::Output>>::Trace, <M3 as TracedModule<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Trace, <M4 as TracedModule<<M3 as Module<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Output>>::Trace, <M5 as TracedModule<<M4 as Module<<M3 as Module<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Output>>::Output>>::Trace)

Source§

fn traced_forward( &self, x: Input, ) -> Result<(<Self as Module<Input>>::Output, Self::Trace), Error>

Source§

impl<Input, M6: TracedModule<M5::Output>, M5: TracedModule<M4::Output>, M4: TracedModule<M3::Output>, M3: TracedModule<M2::Output>, M2: TracedModule<M1::Output>, M1: TracedModule<Input>> TracedModule<Input> for (M1, M2, M3, M4, M5, M6)

Source§

type Trace = (<M1 as TracedModule<Input>>::Trace, <M2 as TracedModule<<M1 as Module<Input>>::Output>>::Trace, <M3 as TracedModule<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Trace, <M4 as TracedModule<<M3 as Module<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Output>>::Trace, <M5 as TracedModule<<M4 as Module<<M3 as Module<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Output>>::Output>>::Trace, <M6 as TracedModule<<M5 as Module<<M4 as Module<<M3 as Module<<M2 as Module<<M1 as Module<Input>>::Output>>::Output>>::Output>>::Output>>::Output>>::Trace)

Source§

fn traced_forward( &self, x: Input, ) -> Result<(<Self as Module<Input>>::Output, Self::Trace), Error>

Implementors§

Source§

impl<E: Dtype + Float + MatMulImpl, const I: usize, const O: usize, A: Module<[E; O], Output = [E; O]> + TracedModule<[E; O]> + Default> TracedModule<[E; I]> for GLU<E, I, O, A>

Source§

type Trace = ((<Dense<E, I, O> as TracedModule<[E; I]>>::Trace, <Bias1d<E, O> as TracedModule<[E; O]>>::Trace, <A as TracedModule<[E; O]>>::Trace), (<Dense<E, I, O> as TracedModule<[E; I]>>::Trace, <Bias1d<E, O> as TracedModule<[E; O]>>::Trace), ([E; O], [E; O]))

Source§

impl<E: Dtype, const I: usize, M: Default + Module<[E; I]> + TracedModule<[E; I]>> TracedModule<[E; I]> for LR<E, I, M>

Source§

impl<E: Dtype, const I: usize, M: Default + Module<[E; I], Output = [E; I]> + TracedModule<[E; I]>> TracedModule<[E; I]> for Residual<E, I, M>

Source§

impl<Input, M: Module<Input> + BaseModule> TracedModule<Input> for M

Source§

type Trace = Input