Changelog for ad-4.4.1
4.4.1 [2020.10.13]
- Change the fixity of
:-
inNumeric.AD.Jet
to be right-associative. Previously, it wasinfixl
, which made things likex :- y :- z
nearly unusable. - Fix backpropagation error in Kahn mode.
- Fix bugs in the
Erf
instance forForwardDouble
. - Add
Numeric.AD.Mode.Reverse.Double
, a variant ofNumeric.AD.Mode.Reverse
that is specialized toDouble
. - Re-export
Jet(..)
,headJet
,tailJet
andjet
fromNumeric.AD
.
4.4 [2020.02.03]
-
Generalize the type of
stochasticGradientDescent
:-stochasticGradientDescent :: (Traversable f, Fractional a, Ord a) => (forall s. Reifies s Tape => f (Scalar a) -> f (Reverse s a) -> Reverse s a) -> [f (Scalar a)] -> f a -> [f a] +stochasticGradientDescent :: (Traversable f, Fractional a, Ord a) => (forall s. Reifies s Tape => e -> f (Reverse s a) -> Reverse s a) -> [e] -> f a -> [f a]
4.3.6 [2019.02.28]
- Make the test suite pass when built against
musl
libc
.
4.3.5 [2018.01.18]
- Add
Semigroup
instance forId
.
4.3.4
- Support
doctest-0.12
4.3.3
- Revamp
Setup.hs
to usecabal-doctest
. This makes it build withCabal-2.0
, and makes thedoctest
s work withcabal new-build
and sandboxes.
4.3.2.1
- GHC 8 support
- Fix Kahn mode's
**
implementation - Fix multiple problems in Erf and InvErf methods
4.3.2
- Added
NoEq
versions of several combinators that can be used whenEq
isn't available on the numeric type involved.
4.3.1
- Further improvements have been made in the performance of
Sparse
mode, at least asymptotically, when used on functions with many variables. Since this is the target use-case forSparse
in the first place, this seems like a good trade-off. Note: this results in an API change, but only in the API of anInternal
module, so this is treated as a minor version bump.
4.3
- Made drastic improvements in the performance of
Tower
andSparse
modes thanks to the help of Björn von Sydow. - Added constrained convex optimization.
- Incorporated some suggestions from herbie for improving floating point accuracy.
4.2.4
- Added
Newton.Double
modules for performance.
4.2.3
reflection
2 support
4.2.2
- Major bug fix for
grads
,jacobians
, and anything that usesSparse
mode inNumeric.AD
. Derivatives after the first two were previously incorrect.
4.2.1.1
- Support
nats
version 1
4.2.1
- Added
stochasticGradientDescent
.
4.2
- Removed broken
Directed
mode. - Added
Numeric.AD.Rank1
combinators and moved most infinitesimal handling back out of the modes and into anAD
wrapper.
4.1
- Fixed a bug in the type of
conjugateGradientAscent
andconjugateGradientDescent
that prevent users from being able to ever call it.
4.0.0.1
- Added the missing
instances.h
header file toextra-source-files
.
4.0
- An overhaul permitting monomorphic modes was completed by @alang9.
- Add a
ForwardDouble
monomorphic mode
3.4
- Added support for
erf
andinverf
, etc. fromData.Number.Erf
. - Split the infinitesimal and mode into two separate parameters to facilitate inlining and easier extension of the API.
3.3.1
- Build system improvements
- Removed unused LANGUAGE pragmas
- Added HLint configuration
- We now use exactly the same versions of the packages used to build
ad
when running the doctests.
3.3
- Renamed
Reverse
toKahn
andWengert
toReverse
. We use Arthur Kahn's topological sorting algorithm to sort the tape after the fact in Kahn mode, while the stock Reverse mode builds a Wengert list as it goes, which is more efficient in practice.
3.2.2
- Export of the
conjugateGradientDescent
andgradientDescent
fromNumeric.AD
3.2.1
conjugateGradientDescent
now stops before it starts returning NaN results.
3.2
- Renamed
Chain
toWengert
to reflect its use of Wengert lists for reverse mode. - Renamed
lift
toauto
to avoid conflict with the more prevalenttransformers
library. - Fixed a bug in
Numeric.AD.Forward.gradWith'
, which caused it to return the wrong value for the primal.
3.1.4
- Added a better "convergence" test for
findZero
- Compute
tan
andtanh
derivatives directly.
3.1.3
- Added
conjugateGradientDescent
andconjugateGradientAscent
toNumeric.AD.Newton
.
3.1.2
- Dependency bump
3.1
- Added
Chain
mode, which isReverse
using a linear tape that doesn't need to be sorted. - Added a suite of doctests.
- Bug fix in
Forward
mode. It was previously yielding incorrect results for anything that usedbind
orbind'
internally.
3.0
- Moved the contents of
Numeric.AD.Mode.Mixed
intoNumeric.AD
- Split off
Numeric.AD.Variadic
for the variadic combinators - Removed the
UU
,FU
,UF
, andFF
type aliases. - Stopped exporting the types for
Mode
andAD
from almost every module. ImportNumeric.AD.Types
if necessary. - Renamed
Tensors
toJet
- Dependency bump to be compatible with ghc 7.4.1 and mtl 2.1
- More aggressive zero tracking.
diff (**n) 0
for constant n anddiff (0**)
both now yield the correct answer for all modes.