  The success and popularity of deep learning is on the rise, partially due to
powerful deep learning frameworks such as TensorFlow and PyTorch that make it
easier to develop deep learning models. However, these libraries also come with
steep learning curves, since programming in these frameworks is quite different
from traditional imperative programming with explicit loops and conditionals.
In this work, we present a tool called TF-Coder for programming by example in
TensorFlow. TF-Coder uses a bottom-up weighted enumerative search, with
value-based pruning of equivalent expressions and flexible type- and
value-based filtering to ensure that expressions adhere to various requirements
imposed by the TensorFlow library. We train models to predict TensorFlow
operations from features of the input and output tensors and natural language
descriptions of tasks, to prioritize relevant operations during search.
TF-Coder solves 63 of 70 real-world tasks within 5 minutes, sometimes finding
simpler solutions in less time compared to experienced human programmers.
