name: neural
version: 0.2.0.0
cabal-version: >=1.10
build-type: Simple
license: MIT
license-file: LICENSE
copyright: Copyright: (c) 2016 Lars Bruenjes
maintainer: brunjlar@gmail.com
stability: provisional
homepage: https://github.com/brunjlar/neural
bug-reports: https://github.com/brunjlar/neural/issues
synopsis: Neural Networks in native Haskell
description:
    The goal of `neural` is to provide a modular and flexible neural network library written in native Haskell.
    .
    Features include
    .
    * /composability/ via arrow-like instances and
    <https://hackage.haskell.org/package/pipes pipes>,
    .
    * /automatic differentiation/ for automatic gradient descent/ backpropagation training
    (using Edward Kmett's fabulous <https://hackage.haskell.org/package/ad ad> library).
    .
    The idea is to be able to easily define new components and wire them up in flexible, possibly
    complicated ways (convolutional deep networks etc.).
    .
    Three examples are included as proof of concept:
    .
    * A simple neural network that approximates the sqrt function on [0,4].
    .
    * A slightly more complicated neural network that solves the famous
    <https://en.wikipedia.org/wiki/Iris_flower_data_set Iris flower> problem.
    .
    * A first (still simple) neural network for recognizing handwritten digits from the equally famous
    <https://en.wikipedia.org/wiki/MNIST_database MNIST> database.
    .
    The library is still very much experimental at this point.
category: Machine Learning
author: Lars Bruenjes
tested-with: GHC ==7.10.3
extra-source-files:
    .travis.yml
    .gitignore
    .ghci
    stack.yaml
    README.markdown

source-repository head
    type: git
    location: https://github.com/brunjlar/neural.git

source-repository this
    type: git
    location: https://github.com/brunjlar/neural.git
    tag: 0.1.1.0

library
    exposed-modules:
        Numeric.Neural
        Numeric.Neural.Layer
        Numeric.Neural.Model
        Numeric.Neural.Normalization
        Numeric.Neural.Pipes
        Data.MyPrelude
        Data.Utils
        Data.Utils.Analytic
        Data.Utils.Arrow
        Data.Utils.List
        Data.Utils.Matrix
        Data.Utils.Pipes
        Data.Utils.Random
        Data.Utils.Stack
        Data.Utils.Statistics
        Data.Utils.Traversable
        Data.Utils.Vector
    build-depends:
        base >=4.7 && <5,
        ad >=4.3.2 && <4.4,
        array >=0.5.1.0 && <0.6,
        bytestring >=0.10.6.0 && <0.11,
        deepseq >=1.4.1.1 && <1.5,
        directory >=1.2.2.0 && <1.3,
        filepath >=1.4.0.0 && <1.5,
        ghc-typelits-natnormalise >=0.4.1 && <0.5,
        hspec >=2.2.2 && <2.3,
        kan-extensions >=4.2.3 && <4.3,
        lens ==4.13.*,
        MonadRandom >=0.4.2.2 && <0.5,
        monad-par >=0.3.4.7 && <0.4,
        monad-par-extras >=0.3.3 && <0.4,
        mtl >=2.2.1 && <2.3,
        parallel >=3.2.1.0 && <3.3,
        pipes >=4.1.8 && <4.2,
        pipes-bytestring >=2.1.1 && <2.2,
        pipes-safe >=2.2.3 && <2.3,
        profunctors ==5.2.*,
        reflection >=2.1.2 && <2.2,
        STMonadTrans >=0.3.3 && <0.4,
        text >=1.2.2.1 && <1.3,
        transformers >=0.4.2.0 && <0.5,
        typelits-witnesses >=0.2.0.0 && <0.3,
        vector >=0.11.0.0 && <0.12
    default-language: Haskell2010
    hs-source-dirs: src
    ghc-options: -Wall -fexcess-precision -optc-O3 -optc-ffast-math

executable iris
    main-is: iris.hs
    build-depends:
        base >=4.7 && <5,
        attoparsec >=0.13.0.1 && <0.14,
        neural >=0.2.0.0 && <0.3,
        text >=1.2.2.1 && <1.3
    default-language: Haskell2010
    hs-source-dirs: examples/iris
    ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fexcess-precision -optc-O3 -optc-ffast-math

executable sqrt
    main-is: sqrt.hs
    build-depends:
        base >=4.7 && <5,
        MonadRandom >=0.4.2.2 && <0.5,
        neural >=0.2.0.0 && <0.3
    default-language: Haskell2010
    hs-source-dirs: examples/sqrt
    ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fexcess-precision -optc-O3 -optc-ffast-math

executable MNIST
    main-is: MNIST.hs
    build-depends:
        base >=4.7 && <5,
        array >=0.5.1.0 && <0.6,
        JuicyPixels >=3.2.7 && <3.3,
        neural >=0.2.0.0 && <0.3,
        pipes >=4.1.8 && <4.2,
        pipes-zlib >=0.4.4 && <0.5
    default-language: Haskell2010
    hs-source-dirs: examples/MNIST
    ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fexcess-precision -optc-O3 -optc-ffast-math

test-suite neural-test
    type: exitcode-stdio-1.0
    main-is: Spec.hs
    build-depends:
        base >=4.7 && <5,
        hspec >=2.2.2 && <2.3,
        MonadRandom >=0.4.2.2 && <0.5,
        neural >=0.2.0.0 && <0.3
    default-language: Haskell2010
    hs-source-dirs: test
    other-modules:
        Utils.MatrixSpec
        Utils.VectorSpec
    ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fexcess-precision -optc-O3 -optc-ffast-math
test-suite neural-doctest
    type: exitcode-stdio-1.0
    main-is: doctest.hs
    build-depends:
        base >=4.7 && <5,
        doctest >=0.10.1 && <0.11,
        Glob >=0.7.5 && <0.8
    default-language: Haskell2010
    hs-source-dirs: doctest
    ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fexcess-precision -optc-O3 -optc-ffast-math

benchmark neural-bench
    type: exitcode-stdio-1.0
    main-is: benchmark.hs
    build-depends:
        base >=4.7 && <5,
        criterion >=1.1.1.0 && <1.2,
        neural >=0.2.0.0 && <0.3
    default-language: Haskell2010
    hs-source-dirs: benchmark
    ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fexcess-precision -optc-O3 -optc-ffast-math