All Projects → ThoughtWorksInc → Deepdarkfantasy

ThoughtWorksInc / Deepdarkfantasy

Licence: apache-2.0
A Programming Language for Deep Learning

Programming Languages

haskell
3896 projects
dsl
153 projects

Projects that are alternatives of or similar to Deepdarkfantasy

Deeplearning.scala
A simple library for creating complex neural networks
Stars: ✭ 745 (+60.91%)
Mutual labels:  automatic-differentiation, functional-programming
Arrow
Λrrow - Functional companion to Kotlin's Standard Library
Stars: ✭ 4,771 (+930.45%)
Mutual labels:  functional-programming
Carp
Carp is a programming language designed to work well for interactive and performance sensitive use cases like games, sound synthesis and visualizations.
Stars: ✭ 4,389 (+847.95%)
Mutual labels:  functional-programming
Groovy
Apache Groovy: A powerful multi-faceted programming language for the JVM platform
Stars: ✭ 4,359 (+841.47%)
Mutual labels:  functional-programming
Gorgonia
Gorgonia is a library that helps facilitate machine learning in Go.
Stars: ✭ 4,295 (+827.65%)
Mutual labels:  automatic-differentiation
Pinocchio
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Stars: ✭ 432 (-6.7%)
Mutual labels:  automatic-differentiation
Plam
An interpreter for learning and exploring pure λ-calculus
Stars: ✭ 385 (-16.85%)
Mutual labels:  functional-programming
Vavr
vʌvr (formerly called Javaslang) is a non-commercial, non-profit object-functional library that runs with Java 8+. It aims to reduce the lines of code and increase code quality.
Stars: ✭ 4,616 (+896.98%)
Mutual labels:  functional-programming
Dartz
Functional programming in Dart
Stars: ✭ 446 (-3.67%)
Mutual labels:  functional-programming
Enzyme
High-performance automatic differentiation of LLVM.
Stars: ✭ 418 (-9.72%)
Mutual labels:  automatic-differentiation
Topshell
TopShell - a purely functional, reactive scripting language
Stars: ✭ 422 (-8.86%)
Mutual labels:  functional-programming
Swift Web
🕸 A collection of Swift server-side frameworks for handling HTML, CSS, routing and middleware.
Stars: ✭ 415 (-10.37%)
Mutual labels:  functional-programming
Kickstarter Prelude
A collection of useful Swift tools that are used in the Kickstarter apps.
Stars: ✭ 437 (-5.62%)
Mutual labels:  functional-programming
Yalinqo
Yet Another LINQ to Objects for PHP [Simplified BSD]
Stars: ✭ 400 (-13.61%)
Mutual labels:  functional-programming
Mostly Adequate Guide
Mostly adequate guide to FP (in javascript)
Stars: ✭ 21,330 (+4506.91%)
Mutual labels:  functional-programming
Kotlingrad
Shape-Safe Symbolic Differentiation with Algebraic Data Types
Stars: ✭ 388 (-16.2%)
Mutual labels:  automatic-differentiation
Fpo
FP library for JavaScript. Supports named-argument style methods.
Stars: ✭ 419 (-9.5%)
Mutual labels:  functional-programming
Nix
Nix, the purely functional package manager
Stars: ✭ 5,291 (+1042.76%)
Mutual labels:  functional-programming
Gluesql
GlueSQL is quite sticky, it attaches to anywhere.
Stars: ✭ 463 (+0%)
Mutual labels:  functional-programming
Dry Monads
Useful, common monads in idiomatic Ruby
Stars: ✭ 453 (-2.16%)
Mutual labels:  functional-programming

DEPRECATED.

DeepDarkFantasy

Hackage Join the chat at https://gitter.im/ThoughtWorksInc/DeepDarkFantasy Build Status Coverage Status

What if we combine Functional Programming and Deep Learning?

As we all know, a neural network is just a computable math expression (and hence a program).

Can we add 'ordinary' programming construct to a 'neural network', like branch, loop, pair, sum, list, and function?

Of course, I must still be able to train the network.

Yes! I had add all the above construct, and I am planning to add more.

They all had their own special gradient structure to propagate loss accordingly.

However, in the end of the day, what is updated is only container of double (or other representation of real). Having those construct only make you write networks easier, but does not offer fundamentally different learning capability.


Can we make the language typed so we can detect error before we train the network?

Sort of. I am able to type most stuff, but I am having trouble adding higher kinded type/generic type. However, they can be written as Haskell function (macro in DDF).


Can we make the language modular and extensible so all people can write all sorts of Chuck Norris move into the language?

Yes Yes Yes! The whole language is structured in finally tagless style, so, it is possible to add new operation/constructor, and still retain type safety.

In fact, there isn't even a core language! All feature(function, double, back propagation, pretty printing) is added as ordinary plugin so you can extend/subset the language as you can wish.

Patchouli Go!

You should read the blog before anything.

We have a few example on using DDF:

Hello world

Solving polynomial equation

Training XOR Network

If you want to look into the code base, it is necessary to understand Finally Tagless.

FA Q

Q: How is the speed?

A: Unoptimized. This is more of a proof of concept that we can use function in neural network, than something that can get you good kaggle score right off the shelf. We are working on Partial Evaluation.

Q: Why does this work theoretically?

A: See DDFADC

Q: What does this have to do with Yang Bo's DeepLearning.scala?

A: We work on a prototype for 2-3 months, and split apart.

Q: You seems to have a space in FAQ.

A: I like it that way.

Q: What are you currently working on?

A: I am trying to add a neural network demo.

Thank You Sir

This is heavily inspired by Neural Networks, Types, and Functional Programming, and my colleague, Yang Bo.

Also, I'd like to thanks dram for getting it to work without Incoherent Instances, and fixing it on stack, cabal & travis.

And izgzhen helps with the initial version of Partial Evaluation.

You can be the next contributor!

I Want You image courtesy of Milk Mage aquired here

Please look at This Issue and help solve it.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].