  In recent years, Deep Learning (DL) has found great success in domains such
as multimedia understanding. However, the complex nature of multimedia data
makes it difficult to develop DL-based software. The state-of-the art tools,
such as Caffe, TensorFlow, Torch7, and CNTK, while are successful in their
applicable domains, are programming libraries with fixed user interface,
internal representation, and execution environment. This makes it difficult to
implement portable and customized DL applications.
  In this paper, we present DeepDSL, a domain specific language (DSL) embedded
in Scala, that compiles deep networks written in DeepDSL to Java source code.
Deep DSL provides (1) intuitive constructs to support compact encoding of deep
networks; (2) symbolic gradient derivation of the networks; (3) static analysis
for memory consumption and error detection; and (4) DSL-level optimization to
improve memory and runtime efficiency.
  DeepDSL programs are compiled into compact, efficient, customizable, and
portable Java source code, which operates the CUDA and CUDNN interfaces running
on Nvidia GPU via a Java Native Interface (JNI) library. We evaluated DeepDSL
with a number of popular DL networks. Our experiments show that the compiled
programs have very competitive runtime performance and memory efficiency
compared to the existing libraries.
