JANUS: Fast and Flexible Deep Learning via Symbolic Graph Execution of
  Imperative Programs
  The rapid evolution of deep neural networks is demanding deep learning (DL)
frameworks not only to satisfy the requirement of quickly executing large
computations, but also to support straightforward programming models for
quickly implementing and experimenting with complex network structures.
However, existing frameworks fail to excel in both departments simultaneously,
leading to diverged efforts for optimizing performance and improving usability.
  This paper presents JANUS, a system that combines the advantages from both
sides by transparently converting an imperative DL program written in Python,
the de-facto scripting language for DL, into an efficiently executable symbolic
dataflow graph. JANUS can convert various dynamic features of Python, including
dynamic control flow, dynamic types, and impure functions, into elements of a
symbolic dataflow graph. Experiments demonstrate that JANUS can achieve fast DL
training by exploiting the techniques imposed by symbolic graph-based DL
frameworks, while maintaining the simple and flexible programmability of
imperative DL frameworks at the same time.
