DeepLearning.scala is a deep learning toolkit for Scala,
combining object-oriented and functional programming constructs,
aims to create statically typed dynamic neural networks
from map
/reduce
and other higher order functions.
DeepLearning.scala allows you to build neural networks from mathematical formulas. It supports floats, doubles, GPU-accelerated N-dimensional arrays, and calculates derivatives of the weights in the formulas.
Neural networks are Monads, which can be created by composing higher order functions. Along with the Monad, we also provide an Applicative type class, to perform multiple calculations in parallel.
Neural networks are programs, too. All Scala features, including functions, expressions and control flows, are available in neural networks, which can be even evaluated step by step in a Jupyter Notebook.
DeepLearning.scala supports plugins. There are various plugins providing algorithms, models, hyperparameters or other features. You can share your own plugins as simple as creating a Github Gist.
DeepLearning.scala is an open source deep-learning toolkit in Scala created by our colleagues at ThoughtWorks. We're excited about this project because it uses differentiable functional programming to create and compose neural networks; a developer simply writes code in Scala with static typing.