Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for generating a system output from a system input. In one aspect, a neural network system includes a memory storing a set of register vectors and data defining modules, wherein each module is a respective function that takes as input one or more first vectors and outputs a second vector. The system also includes a controller neural network configured to receive a neural network input for each time step and process the neural network input to generate a neural network output. The system further includes a subsystem configured to determine inputs to each of the modules, process the input to the module to generate a respective module output, determine updated values for the register vectors, and generate a neural network input for the next time step from the updated values of the register vectors.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A neural network system for generating a system output from a system input, the neural network system comprising: a memory storing a set of register vectors and data defining a plurality of modules, wherein each module is a respective function that takes as input one or more first vectors and outputs a second vector; a controller neural network configured to, for each of a plurality of time steps: receive a neural network input for the time step; and process the neural network input for the time step to generate a neural network output for the time step; and a subsystem configured to, for each of the plurality of time steps: determine, from the neural network output, inputs to each of the plurality of modules; process, for each of the modules, the input to the module using the module to generate a respective module output; determine, from the neural network output, updated values for the register vectors using the module outputs; and generate a neural network input for the next time step from the updated values of the register vectors. 2. The neural network system of claim 1, further comprising: an external variable-sized memory tape, wherein the plurality of modules comprises a first module that reads from the external variable-sized memory tape in accordance with the input to the first module and a second module that writes to the external variable-sized memory tape in accordance with the input to the second module. 3. The neural network system of claim 2, wherein the subsystem is configured to initialize the external variable-sized memory tape with the system input. 4. The neural network system of claim 3, wherein the values stored in the external variable-sized memory tape after the last time step of the plurality of time steps are the system output. 5. The neural network system of claim 1, wherein the neural network input for the next time step is a binarized value of each of the register vectors. 6. The neural network system of claim 1, wherein the subsystem is further configured to, for each time step: determine, from the neural network output, whether the time step should be the last time step in the plurality of time steps. 7. The neural network system of claim 1, wherein the controller neural network is a recurrent neural network. 8. A method for generating a system output from a system input using a neural network system comprising a controller neural network configured to, for each of a plurality of time steps, receive a neural network input for the time step, and process the neural network input for the time step to generate a neural network output for the time step, the method comprising, for each of the plurality of time steps: storing a set of register vectors and data defining a plurality of modules in memory, wherein each module is a respective function that takes as input one or more first vectors and outputs a second vector; determining, from the neural network output, inputs to each of a plurality of modules, wherein each module is a respective function that takes as input one or more first vectors and outputs a third vector; processing, for each of the modules, the input to the module using the module to generate a respective module output; determining, from the neural network output, updated values for a plurality of register vectors using the module outputs; and generating a neural network input for the next time step from the updated values of the register vectors. 9. The method of claim 8, wherein the neural network system further comprises: an external variable-sized memory tape, wherein the plurality of modules comprises a first module that reads from the external variable-sized memory tape in accordance with the input to the first module and a second module that writes to the external variable-sized memory tape in accordance with the input to the second module. 10. The method of claim 9, further comprising initializing the external variable-sized memory tape with the system input. 11. The method of claim 10, wherein the values stored in the external variable-sized memory tape after the last time step of the plurality of time steps are the system output. 12. The method of claim 8, wherein the neural network input for the next time step is a binarized value of each of the register vectors. 13. The method of claim 8, further comprising: determining, from the neural network output, whether the time step should be the last time step in the plurality of time steps. 14. The method of claim 8, wherein the controller neural network is a recurrent neural network. 15. A computer storage medium encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform the operations of generating a system output from a system input using a neural network system comprising a controller neural network configured to, for each of a plurality of time steps, receive a neural network input for the time step, and process the neural network input for the time step to generate a neural network output for the time step, the method comprising, for each of the plurality of time steps: storing a set of register vectors and data defining a plurality of modules in memory, wherein each module is a respective function that takes as input one or more first vectors and outputs a second vector; determining, from the neural network output, inputs to each of a plurality of modules, wherein each module is a respective function that takes as input one or more first vectors and outputs a third vector; processing, for each of the modules, the input to the module using the module to generate a respective module output; determining, from the neural network output, updated values for a plurality of register vectors using the module outputs; and generating a neural network input for the next time step from the updated values of the register vectors. 16. The computer-implemented method of claim 15, wherein the neural network system further comprises: an external variable-sized memory tape, wherein the plurality of modules comprises a first module that reads from the external variable-sized memory tape in accordance with the input to the first module and a second module that writes to the external variable-sized memory tape in accordance with the input to the second module. 17. The computer-implemented method of claim 16, wherein the values stored in the external variable-sized memory tape after the last time step of the plurality of time steps are the system output. 18. The computer-implemented method of claim 17, wherein the neural network input for the next time step is a binarized value of each of the register vectors. 19. The computer-implemented method of claim 15, further comprising: determining, from the neural network output, whether the time step should be the last time step in the plurality of time steps. 20. The computer-implemented method of claim 15, wherein the controller neural network is a recurrent neural network.