Deep Neural Networks for Visual Reasoning, Program Induction, and Text-to-Image Synthesis