pub trait Differentiable {
    type Tensors: TensorIter + 'static;
    type Gradient;

    // Required methods
    fn tensors(&self) -> Self::Tensors;
    fn grad(
        tensors: &Self::Tensors,
        grad_map: &HashMap<usize, Tensor>
    ) -> Self::Gradient;
    fn grad_map(
        tensors: &Self::Tensors,
        grad: Self::Gradient,
        out: &mut HashMap<usize, Tensor>
    );
}

Required Associated Types§

Required Methods§

source

fn tensors(&self) -> Self::Tensors

source

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a, T> Differentiable for &'a T
where T: Differentiable,

§

type Tensors = <T as Differentiable>::Tensors

§

type Gradient = <T as Differentiable>::Gradient

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A> Differentiable for (A,)

§

type Tensors = <A as Differentiable>::Tensors

§

type Gradient = <A as Differentiable>::Gradient

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A, B> Differentiable for (A, B)

§

type Tensors = (<A as Differentiable>::Tensors, <B as Differentiable>::Tensors)

§

type Gradient = (<A as Differentiable>::Gradient, <B as Differentiable>::Gradient)

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A, B, C> Differentiable for (A, B, C)

§

type Tensors = (<A as Differentiable>::Tensors, <B as Differentiable>::Tensors, <C as Differentiable>::Tensors)

§

type Gradient = (<A as Differentiable>::Gradient, <B as Differentiable>::Gradient, <C as Differentiable>::Gradient)

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A, B, C, D> Differentiable for (A, B, C, D)

§

type Tensors = (<A as Differentiable>::Tensors, <B as Differentiable>::Tensors, <C as Differentiable>::Tensors, <D as Differentiable>::Tensors)

§

type Gradient = (<A as Differentiable>::Gradient, <B as Differentiable>::Gradient, <C as Differentiable>::Gradient, <D as Differentiable>::Gradient)

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A, B, C, D, E> Differentiable for (A, B, C, D, E)

§

type Tensors = (<A as Differentiable>::Tensors, <B as Differentiable>::Tensors, <C as Differentiable>::Tensors, <D as Differentiable>::Tensors, <E as Differentiable>::Tensors)

§

type Gradient = (<A as Differentiable>::Gradient, <B as Differentiable>::Gradient, <C as Differentiable>::Gradient, <D as Differentiable>::Gradient, <E as Differentiable>::Gradient)

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A, B, C, D, E, F> Differentiable for (A, B, C, D, E, F)

§

type Tensors = (<A as Differentiable>::Tensors, <B as Differentiable>::Tensors, <C as Differentiable>::Tensors, <D as Differentiable>::Tensors, <E as Differentiable>::Tensors, <F as Differentiable>::Tensors)

§

type Gradient = (<A as Differentiable>::Gradient, <B as Differentiable>::Gradient, <C as Differentiable>::Gradient, <D as Differentiable>::Gradient, <E as Differentiable>::Gradient, <F as Differentiable>::Gradient)

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A, B, C, D, E, F, G> Differentiable for (A, B, C, D, E, F, G)

§

type Tensors = (<A as Differentiable>::Tensors, <B as Differentiable>::Tensors, <C as Differentiable>::Tensors, <D as Differentiable>::Tensors, <E as Differentiable>::Tensors, <F as Differentiable>::Tensors, <G as Differentiable>::Tensors)

§

type Gradient = (<A as Differentiable>::Gradient, <B as Differentiable>::Gradient, <C as Differentiable>::Gradient, <D as Differentiable>::Gradient, <E as Differentiable>::Gradient, <F as Differentiable>::Gradient, <G as Differentiable>::Gradient)

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

source§

impl<A, B, C, D, E, F, G, H> Differentiable for (A, B, C, D, E, F, G, H)

source§

impl<A, B, C, D, E, F, G, H, I> Differentiable for (A, B, C, D, E, F, G, H, I)

source§

impl<A, B, C, D, E, F, G, H, I, J> Differentiable for (A, B, C, D, E, F, G, H, I, J)

source§

impl<A, B, C, D, E, F, G, H, I, J, K> Differentiable for (A, B, C, D, E, F, G, H, I, J, K)

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> Differentiable for (A, B, C, D, E, F, G, H, I, J, K, L)

source§

impl<const N: usize, T> Differentiable for [T; N]

§

type Tensors = [<T as Differentiable>::Tensors; N]

§

type Gradient = [<T as Differentiable>::Gradient; N]

source§

fn tensors(&self) -> Self::Tensors

source§

fn grad( tensors: &Self::Tensors, grad_map: &HashMap<usize, Tensor> ) -> Self::Gradient

source§

fn grad_map( tensors: &Self::Tensors, grad: Self::Gradient, out: &mut HashMap<usize, Tensor> )

Implementors§