backprop-0.2.2.0: Heterogeneous automatic differentation (backpropagation)

Copyright(c) Justin Le 2018
LicenseBSD3
Maintainerjustin@jle.im
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Prelude.Backprop

Contents

Description

Some lifted versions of common functions found in Prelude (or base in general).

This module is intended to be a catch-all one, so feel free to suggest other functions or submit a PR if you think one would make sense.

See Prelude.Backprop.Num for a version with Num constraints instead of Backprop constraints, and Prelude.Backprop.Explicit for a version allowing you to provide zero, add, and one explicitly.

Since: 0.1.3.0

Synopsis

Foldable and Traversable

sum :: (Foldable t, Functor t, Backprop (t a), Backprop a, Num a, Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted sum. More efficient than going through toList.

product :: (Foldable t, Functor t, Backprop (t a), Backprop a, Fractional a, Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted product. More efficient than going through toList.

length :: (Foldable t, Backprop (t a), Backprop b, Num b, Reifies s W) => BVar s (t a) -> BVar s b Source #

Lifted length. More efficient than going through toList.

minimum :: (Foldable t, Functor t, Backprop a, Ord a, Backprop (t a), Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted minimum. Undefined for situations where minimum would be undefined. More efficient than going through toList.

maximum :: (Foldable t, Functor t, Backprop a, Ord a, Backprop (t a), Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted maximum. Undefined for situations where maximum would be undefined. More efficient than going through toList.

traverse :: (Traversable t, Applicative f, Foldable f, Backprop a, Backprop b, Backprop (f (t b)), Backprop (t b), Reifies s W) => (BVar s a -> f (BVar s b)) -> BVar s (t a) -> BVar s (f (t b)) Source #

Lifted traverse. Lifts backpropagatable functions to be backpropagatable functions on Traversable Functors.

toList :: (Traversable t, Backprop a, Reifies s W) => BVar s (t a) -> [BVar s a] Source #

Lifted version of toList. Takes a BVar of a Traversable of items and returns a list of BVars for each item.

You can use this to implement "lifted" versions of Foldable methods like foldr, foldl', etc.; however, sum, product, length, minimum, and maximum have more efficient implementations than simply minimum . toList.

Since: 0.2.2.0

mapAccumL :: (Traversable t, Backprop b, Backprop c, Backprop (t c), Reifies s W) => (BVar s a -> BVar s b -> (BVar s a, BVar s c)) -> BVar s a -> BVar s (t b) -> (BVar s a, BVar s (t c)) Source #

Lifted version of mapAccumL.

Since: 0.2.2.0

mapAccumR :: (Traversable t, Backprop b, Backprop c, Backprop (t c), Reifies s W) => (BVar s a -> BVar s b -> (BVar s a, BVar s c)) -> BVar s a -> BVar s (t b) -> (BVar s a, BVar s (t c)) Source #

Lifted version of mapAccumR.

Since: 0.2.2.0

Functor and Applicative

fmap :: (Traversable f, Backprop a, Backprop b, Backprop (f b), Reifies s W) => (BVar s a -> BVar s b) -> BVar s (f a) -> BVar s (f b) Source #

Lifted fmap. Lifts backpropagatable functions to be backpropagatable functions on Traversable Functors.

(<$>) :: (Traversable f, Backprop a, Backprop b, Backprop (f b), Reifies s W) => (BVar s a -> BVar s b) -> BVar s (f a) -> BVar s (f b) Source #

Alias for fmap.

pure :: (Foldable t, Applicative t, Backprop (t a), Backprop a, Reifies s W) => BVar s a -> BVar s (t a) Source #

Lifted pure.

liftA2 :: (Traversable f, Applicative f, Backprop a, Backprop b, Backprop c, Backprop (f c), Reifies s W) => (BVar s a -> BVar s b -> BVar s c) -> BVar s (f a) -> BVar s (f b) -> BVar s (f c) Source #

Lifted liftA2. Lifts backpropagatable functions to be backpropagatable functions on Traversable Applicatives.

liftA3 :: (Traversable f, Applicative f, Backprop a, Backprop b, Backprop c, Backprop d, Backprop (f d), Reifies s W) => (BVar s a -> BVar s b -> BVar s c -> BVar s d) -> BVar s (f a) -> BVar s (f b) -> BVar s (f c) -> BVar s (f d) Source #

Lifted liftA3. Lifts backpropagatable functions to be backpropagatable functions on Traversable Applicatives.

Misc

fromIntegral :: (Backprop a, Integral a, Backprop b, Integral b, Reifies s W) => BVar s a -> BVar s b Source #

Lifted conversion between two Integral instances.

Since: 0.2.1.0

realToFrac :: (Backprop a, Fractional a, Real a, Backprop b, Fractional b, Real b, Reifies s W) => BVar s a -> BVar s b Source #

Lifted conversion between two Fractional and Real instances.

Since: 0.2.1.0

coerce :: Coercible a b => BVar s a -> BVar s b Source #

Coerce items inside a BVar.