Struct gad::graph::Graph [−][src]
pub struct Graph<C: Config> { /* fields omitted */ }
Main structure holding the computational graph (aka “tape”) used for automatic differentiation.
In practice, the configuration is instantiated to build either Graph1
or GraphN
,
depending if higher-order differentials are needed or not.
Implementations
impl<C: Config> Graph<C>
[src]
impl<C: Config> Graph<C>
[src]pub fn make_node<D, G, F, Dims>(
&mut self,
data: D,
inputs: Vec<Option<Id>>,
update_func: F
) -> Value<D> where
C::GradientAlgebra: CoreAlgebra<D, Value = G>,
C::GradientStore: GradientStore<GradientId<D>, G>,
D: HasDims<Dims = Dims>,
G: HasDims<Dims = Dims> + Clone + 'static,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
F: Fn(&mut C::GradientAlgebra, &mut C::GradientStore, G) -> Result<()> + 'static + Send + Sync,
[src]
&mut self,
data: D,
inputs: Vec<Option<Id>>,
update_func: F
) -> Value<D> where
C::GradientAlgebra: CoreAlgebra<D, Value = G>,
C::GradientStore: GradientStore<GradientId<D>, G>,
D: HasDims<Dims = Dims>,
G: HasDims<Dims = Dims> + Clone + 'static,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
F: Fn(&mut C::GradientAlgebra, &mut C::GradientStore, G) -> Result<()> + 'static + Send + Sync,
Create a computation node (used to define operators).
During back-propagation, update_func
must call store.add_gradient
to propagate the gradient
of each (non-constant) input.
pub fn make_generic_node<S, D, GS, GD, F, Dims>(
&mut self,
data: D,
inputs: Vec<Option<Id>>,
update_func: F
) -> Value<D> where
C::GradientAlgebra: CoreAlgebra<S, Value = GS>,
C::GradientAlgebra: CoreAlgebra<D, Value = GD>,
C::GradientStore: GradientStore<GradientId<D>, GD>,
C::GradientStore: GradientStore<GradientId<S>, GS>,
D: HasDims<Dims = Dims>,
GD: HasDims<Dims = Dims> + Clone + 'static,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
F: Fn(&mut C::GradientAlgebra, &mut C::GradientStore, GD) -> Result<()> + 'static + Send + Sync,
[src]
&mut self,
data: D,
inputs: Vec<Option<Id>>,
update_func: F
) -> Value<D> where
C::GradientAlgebra: CoreAlgebra<S, Value = GS>,
C::GradientAlgebra: CoreAlgebra<D, Value = GD>,
C::GradientStore: GradientStore<GradientId<D>, GD>,
C::GradientStore: GradientStore<GradientId<S>, GS>,
D: HasDims<Dims = Dims>,
GD: HasDims<Dims = Dims> + Clone + 'static,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
F: Fn(&mut C::GradientAlgebra, &mut C::GradientStore, GD) -> Result<()> + 'static + Send + Sync,
Create a computation node where the source type S
may be different than the target type D
.
impl<E: Default + Clone> Graph<Config1<E>>
[src]
impl<E: Default + Clone> Graph<Config1<E>>
[src]First order only (this is the most common case)
pub fn evaluate_gradients<T>(
&self,
id: GradientId<T>,
gradient: T
) -> Result<GenericGradientMap1> where
E: CoreAlgebra<T, Value = T>,
T: 'static,
[src]
&self,
id: GradientId<T>,
gradient: T
) -> Result<GenericGradientMap1> where
E: CoreAlgebra<T, Value = T>,
T: 'static,
Propagate gradients backward, starting with the node id
.
- Allow the graph to be re-used.
- Gradients are stored as pure data.
pub fn evaluate_gradients_once<T>(
self,
id: GradientId<T>,
gradient: T
) -> Result<GenericGradientMap1> where
E: CoreAlgebra<T, Value = T>,
T: 'static,
[src]
self,
id: GradientId<T>,
gradient: T
) -> Result<GenericGradientMap1> where
E: CoreAlgebra<T, Value = T>,
T: 'static,
Propagate gradients backward, starting with the node id
.
- Clean up memory when possible and consume the graph.
- Gradients are stored as pure data.
impl<E: Default + Clone> Graph<ConfigN<E>>
[src]
impl<E: Default + Clone> Graph<ConfigN<E>>
[src]Higher order differentials.
pub fn compute_gradients<D>(
&mut self,
id: GradientId<D>,
gradient: Value<D>
) -> Result<GenericGradientMapN> where
Self: CoreAlgebra<D, Value = Value<D>>,
D: 'static,
[src]
&mut self,
id: GradientId<D>,
gradient: Value<D>
) -> Result<GenericGradientMapN> where
Self: CoreAlgebra<D, Value = Value<D>>,
D: 'static,
Propagate gradients backward, starting with the node id
.
- Gradients are computed as graph values that can be differentiated later.
- The graph is augmented with the nodes corresponding to gradient computations.
Trait Implementations
impl<D, E, Dims> AnalyticAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + AnalyticAlgebra<D> + ArithAlgebra<D> + ConstArithAlgebra<D, i16> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> AnalyticAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + AnalyticAlgebra<D> + ArithAlgebra<D> + ConstArithAlgebra<D, i16> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]fn exp(&mut self, v: &Value<D>) -> Value<D>
[src]
fn log(&mut self, v: &Value<D>) -> Value<D>
[src]
fn log1p(&mut self, v: &Value<D>) -> Value<D>
[src]
fn sin(&mut self, v: &Value<D>) -> Value<D>
[src]
fn cos(&mut self, v: &Value<D>) -> Value<D>
[src]
fn tanh(&mut self, v: &Value<D>) -> Value<D>
[src]
fn sigmoid(&mut self, v: &Value<D>) -> Value<D>
[src]
fn reciprocal(&mut self, v: &Value<D>) -> Value<D>
[src]
fn sqrt(&mut self, v: &Value<D>) -> Value<D>
[src]
fn div(&mut self, v0: &Value<D>, v1: &Value<D>) -> Result<Value<D>>
[src]
fn pow(&mut self, v: &Value, p: &Value) -> Result<Value> where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
impl<D, E, Dims> AnalyticAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + AnalyticAlgebra<D> + ArithAlgebra<D> + ConstArithAlgebra<D, i16> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> AnalyticAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + AnalyticAlgebra<D> + ArithAlgebra<D> + ConstArithAlgebra<D, i16> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]fn exp(&mut self, v: &Value<D>) -> Value<D>
[src]
fn log(&mut self, v: &Value<D>) -> Value<D>
[src]
fn log1p(&mut self, v: &Value<D>) -> Value<D>
[src]
fn sin(&mut self, v: &Value<D>) -> Value<D>
[src]
fn cos(&mut self, v: &Value<D>) -> Value<D>
[src]
fn tanh(&mut self, v: &Value<D>) -> Value<D>
[src]
fn sigmoid(&mut self, v: &Value<D>) -> Value<D>
[src]
fn reciprocal(&mut self, v: &Value<D>) -> Value<D>
[src]
fn sqrt(&mut self, v: &Value<D>) -> Value<D>
[src]
fn div(&mut self, v0: &Value<D>, v1: &Value<D>) -> Result<Value<D>>
[src]
fn pow(&mut self, v: &Value, p: &Value) -> Result<Value> where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
impl<D, E, Dims> ArithAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> ArithAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]impl<D, E, Dims> ArithAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> ArithAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]impl<D, E, T, Dims> ArrayAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T> + ArrayAlgebra<D, Scalar = T, Dims = Dims>,
Dims: PartialEq + Clone + Copy + Debug + Default + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
T: Number,
[src]
impl<D, E, T, Dims> ArrayAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T> + ArrayAlgebra<D, Scalar = T, Dims = Dims>,
Dims: PartialEq + Clone + Copy + Debug + Default + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
T: Number,
[src]type Dims = Dims
type Scalar = Value<T>
fn flat(&mut self, v: &Value<D>) -> Value<D>
[src]
fn moddims(&mut self, v: &Value<D>, rdims: Dims) -> Result<Value<D>>
[src]
fn tile_as(&mut self, v: &Value<D>, rdims: Dims) -> Result<Value<D>>
[src]
fn sum_as(&mut self, v: &Value<D>, rdims: Dims) -> Result<Value<D>>
[src]
fn constant_as(&mut self, v: &Value<T>, dims: Dims) -> Value<D>
[src]
fn as_scalar(&mut self, v: &Value<D>) -> Result<Value<T>>
[src]
fn scale(&mut self, v1: &Value<T>, v2: &Value<D>) -> Value<D>
[src]
fn dot(&mut self, v1: &Value<D>, v2: &Value<D>) -> Result<Value<T>>
[src]
fn norm2(&mut self, v: &Value) -> Self::Scalar
[src]
impl<D, E, T, Dims> ArrayAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T> + ArrayAlgebra<D, Scalar = T, Dims = Dims>,
Dims: PartialEq + Clone + Copy + Debug + Default + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
T: Number,
[src]
impl<D, E, T, Dims> ArrayAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T> + ArrayAlgebra<D, Scalar = T, Dims = Dims>,
Dims: PartialEq + Clone + Copy + Debug + Default + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
T: Number,
[src]type Dims = Dims
type Scalar = Value<T>
fn flat(&mut self, v: &Value<D>) -> Value<D>
[src]
fn moddims(&mut self, v: &Value<D>, rdims: Dims) -> Result<Value<D>>
[src]
fn tile_as(&mut self, v: &Value<D>, rdims: Dims) -> Result<Value<D>>
[src]
fn sum_as(&mut self, v: &Value<D>, rdims: Dims) -> Result<Value<D>>
[src]
fn constant_as(&mut self, v: &Value<T>, dims: Dims) -> Value<D>
[src]
fn as_scalar(&mut self, v: &Value<D>) -> Result<Value<T>>
[src]
fn scale(&mut self, v1: &Value<T>, v2: &Value<D>) -> Value<D>
[src]
fn dot(&mut self, v1: &Value<D>, v2: &Value<D>) -> Result<Value<T>>
[src]
fn norm2(&mut self, v: &Value) -> Self::Scalar
[src]
impl<D, E, T, Dims> ArrayCompareAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + CompareAlgebra<D> + ArrayCompareAlgebra<D> + ArrayAlgebra<D, Dims = Dims> + ArithAlgebra<D> + ArrayAlgebra<D, Scalar = T, Dims = Dims> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T>,
T: Number,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Default + Copy + Clone + 'static + Send + Sync,
[src]
impl<D, E, T, Dims> ArrayCompareAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + CompareAlgebra<D> + ArrayCompareAlgebra<D> + ArrayAlgebra<D, Dims = Dims> + ArithAlgebra<D> + ArrayAlgebra<D, Scalar = T, Dims = Dims> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T>,
T: Number,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Default + Copy + Clone + 'static + Send + Sync,
[src]impl<D, E, T, Dims> ArrayCompareAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + CompareAlgebra<D> + ArrayCompareAlgebra<D> + ArrayAlgebra<D, Dims = Dims> + ArithAlgebra<D> + ArrayAlgebra<D, Scalar = T, Dims = Dims> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T>,
T: Number,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Default + Copy + Clone + 'static + Send + Sync,
[src]
impl<D, E, T, Dims> ArrayCompareAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CoreAlgebra<T, Value = T> + CompareAlgebra<D> + ArrayCompareAlgebra<D> + ArrayAlgebra<D, Dims = Dims> + ArithAlgebra<D> + ArrayAlgebra<D, Scalar = T, Dims = Dims> + LinkedAlgebra<Value<D>, D> + LinkedAlgebra<Value<T>, T>,
T: Number,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Default + Copy + Clone + 'static + Send + Sync,
[src]impl<C: Config> Clone for Graph<C>
[src]
impl<C: Config> Clone for Graph<C>
[src]fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<D, E, Dims> CompareAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CompareAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> CompareAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CompareAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]fn select_argmax(
&mut self,
v0: &Value<D>,
v1: &Value<D>,
r0: Option<&Value<D>>,
r1: Option<&Value<D>>
) -> Result<Value<D>>
[src]
&mut self,
v0: &Value<D>,
v1: &Value<D>,
r0: Option<&Value<D>>,
r1: Option<&Value<D>>
) -> Result<Value<D>>
fn min(&mut self, v0: &Value, v1: &Value) -> Result<Value>
[src]
fn max(&mut self, v0: &Value, v1: &Value) -> Result<Value>
[src]
fn abs(&mut self, v: &Value) -> Value where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
fn sign(&mut self, v: &Value) -> Value where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
fn relu(&mut self, v: &Value) -> Value where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
impl<D, E, Dims> CompareAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CompareAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> CompareAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + CompareAlgebra<D> + LinkedAlgebra<Value<D>, D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]fn select_argmax(
&mut self,
v0: &Value<D>,
v1: &Value<D>,
r0: Option<&Value<D>>,
r1: Option<&Value<D>>
) -> Result<Value<D>>
[src]
&mut self,
v0: &Value<D>,
v1: &Value<D>,
r0: Option<&Value<D>>,
r1: Option<&Value<D>>
) -> Result<Value<D>>
fn min(&mut self, v0: &Value, v1: &Value) -> Result<Value>
[src]
fn max(&mut self, v0: &Value, v1: &Value) -> Result<Value>
[src]
fn abs(&mut self, v: &Value) -> Value where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
fn sign(&mut self, v: &Value) -> Value where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
fn relu(&mut self, v: &Value) -> Value where
Self: ArithAlgebra<Value>,
[src]
Self: ArithAlgebra<Value>,
impl<D, E, Dims, C> ConstArithAlgebra<Value<D>, C> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + ConstArithAlgebra<D, C> + LinkedAlgebra<Value<D>, D>,
C: Sub<C, Output = C> + One + Clone + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims, C> ConstArithAlgebra<Value<D>, C> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + ConstArithAlgebra<D, C> + LinkedAlgebra<Value<D>, D>,
C: Sub<C, Output = C> + One + Clone + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]impl<D, E, Dims, C> ConstArithAlgebra<Value<D>, C> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + ConstArithAlgebra<D, C> + LinkedAlgebra<Value<D>, D>,
C: Sub<C, Output = C> + One + Clone + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims, C> ConstArithAlgebra<Value<D>, C> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + ArithAlgebra<D> + ConstArithAlgebra<D, C> + LinkedAlgebra<Value<D>, D>,
C: Sub<C, Output = C> + One + Clone + 'static + Send + Sync,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]impl<D, E, Dims> CoreAlgebra<D> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> CoreAlgebra<D> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]impl<D, E, Dims> CoreAlgebra<D> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> CoreAlgebra<D> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]impl<C: Config> HasGradientReader for Graph<C>
[src]
impl<C: Config> HasGradientReader for Graph<C>
[src]type GradientReader = C::GradientStore
impl<V, C: Config> LinkedAlgebra<V, V> for Graph<C>
[src]
impl<V, C: Config> LinkedAlgebra<V, V> for Graph<C>
[src]Assume that we link into a copy of the original graph.
impl<D, E, Dims> MatrixAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + LinkedAlgebra<Value<D>, D> + MatrixAlgebra<D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> MatrixAlgebra<Value<D>> for Graph<Config1<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + LinkedAlgebra<Value<D>, D> + MatrixAlgebra<D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]impl<D, E, Dims> MatrixAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + LinkedAlgebra<Value<D>, D> + MatrixAlgebra<D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]
impl<D, E, Dims> MatrixAlgebra<Value<D>> for Graph<ConfigN<E>> where
E: Default + Clone + CoreAlgebra<D, Value = D> + LinkedAlgebra<Value<D>, D> + MatrixAlgebra<D>,
D: HasDims<Dims = Dims> + Clone + 'static + Send + Sync,
Dims: PartialEq + Debug + Clone + 'static + Send + Sync,
[src]Auto Trait Implementations
impl<C> !RefUnwindSafe for Graph<C>
impl<C> !RefUnwindSafe for Graph<C>
impl<C> Send for Graph<C> where
<C as Config>::EvalAlgebra: Send,
impl<C> Send for Graph<C> where
<C as Config>::EvalAlgebra: Send,
impl<C> Sync for Graph<C> where
<C as Config>::EvalAlgebra: Sync,
impl<C> Sync for Graph<C> where
<C as Config>::EvalAlgebra: Sync,
impl<C> Unpin for Graph<C> where
<C as Config>::EvalAlgebra: Unpin,
impl<C> Unpin for Graph<C> where
<C as Config>::EvalAlgebra: Unpin,
impl<C> !UnwindSafe for Graph<C>
impl<C> !UnwindSafe for Graph<C>
Blanket Implementations
impl<D, A> LinkedAlgebra<Value<D>, D> for A where
A: CoreAlgebra<D, Value = D>,
[src]
impl<D, A> LinkedAlgebra<Value<D>, D> for A where
A: CoreAlgebra<D, Value = D>,
[src]