packages feed

backprop-0.2.4.0: doc/09-comparisons.md

---
title: Comparisons
---

Comparisons
===========

*backprop* can be compared and contrasted to many other similar libraries with
some overlap:

1.  The *[ad][]* library (and variants like *[diffhask][]*) support automatic
    differentiation, but only for *homogeneous*/*monomorphic* situations.  All
    values in a computation must be of the same type --- so, your computation
    might be the manipulation of `Double`s through a `Double -> Double`
    function.

    *backprop* allows you to mix matrices, vectors, doubles, integers, and even
    key-value maps as a part of your computation, and they will all be
    backpropagated properly with the help of the `Backprop` typeclass.

2.  The *[autograd][]* library is a very close equivalent to *backprop*,
    implemented in Python for Python applications.  The difference between
    *backprop* and *autograd* is mostly the difference between Haskell and
    Python --- static types with type inference, purity, etc.

3.  There is a link between *backprop* and deep learning/neural network
    libraries like *[tensorflow][]*, *[caffe][]*, and *[theano][]*, which all
    all support some form of heterogeneous automatic differentiation.  Haskell
    libraries doing similar things include *[grenade][]*.

    These are all frameworks for working with neural networks or other
    gradient-based optimizations --- they include things like built-in
    optimizers, methods to automate training data, built-in models to use out
    of the box.  *backprop* could be used as a *part* of such a framework, like
    I described in my [A Purely Functional Typed Approach to Trainable
    Models][models] blog series; however, the *backprop* library itself does
    not provide any built in models or optimizers or automated data processing
    pipelines.

[ad]: https://hackage.haskell.org/package/ad
[diffhask]: https://hackage.haskell.org/package/diffhask
[autograd]: https://github.com/HIPS/autograd
[tensorflow]: https://www.tensorflow.org/
[caffe]: http://caffe.berkeleyvision.org/
[theano]: http://www.deeplearning.net/software/theano/
[grenade]: http://hackage.haskell.org/package/grenade
[models]: https://blog.jle.im/entry/purely-functional-typed-models-1.html