DeepLearning.scala is a DSL for creating complex neural networks.
With the help of DeepLearning.scala, regular programmers are able to build complex neural networks from simple code. You write code almost as usual, the only difference being that code based on DeepLearning.scala is differentiable, which enables such code to evolve by modifying its parameters continuously.
Differentiable basic types
Like Theano and other deep learning toolkits, 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.
Differentiable control flow
Neural networks created by DeepLearning.scala may contains control flows like
case in a regular language. Combined with ADT data structures, you can implement arbitary algorithms inside neural networks, and still keep some of the variables used in the algorithms differentiable and trainable.
Neural networks created by DeepLearning.scala are composable. You can create large networks by combining smaller networks. If two larger networks share some sub-networks, the weights in shared sub-networks trained with one network affect the other network.
Static type system
All of the above features are statically type checked.
Version 1.0 is the current version with all of the above features. The final version will be released in Janary 2017.
whileand other higher-order functions on differenitable
whileand other higher-order functions on GPU-accelerated differenitable N-dimensional arrays.
Version 2.0 will be released in March 2017.
- Support using custom
case classes inside neural networks.
- Support distributed models and distributed training on Spark.
Version 3.0 will be released in late 2017.
DeepLearning.scala is heavily inspired by my colleague @MarisaKirisame.