Giter Site home page Giter Site logo

jbdatascience / ntm-lasagne Goto Github PK

View Code? Open in Web Editor NEW

This project forked from snipsco/ntm-lasagne

0.0 2.0 0.0 1.18 MB

Neural Turing Machines library in Theano with Lasagne

Home Page: https://medium.com/snips-ai/ntm-lasagne-a-library-for-neural-turing-machines-in-lasagne-2cdce6837315#.63t84s5r5

License: MIT License

Python 100.00%

ntm-lasagne's Introduction

NTM-Lasagne

MIT License

NTM-Lasagne is a library to create Neural Turing Machines (NTMs) in Theano using the Lasagne library. If you want to learn more about NTMs, check out our blog post.

This library features:

  • A Neural Turing Machine layer NTMLayer, where all its components (controller, heads, memory) are fully customizable.
  • Two types of controllers: a feed-forward DenseController and a "vanilla" recurrent RecurrentController.
  • A dashboard to visualize the inner mechanism of the NTM.
  • Generators to sample examples from algorithmic tasks.

Getting started

To avoid any conflict with your existing Python setup, and to keep this project self-contained, it is suggested to work in a virtual environment with virtualenv. To install virtualenv:

sudo pip install --upgrade virtualenv

Create a virtual environment called venv, activate it and install the requirements given by requirements.txt. NTM-Lasagne requires the bleeding-edge version, check the Lasagne installation instructions for details. The latest version of Lasagne is included in the requirements.txt.

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
pip install .

Example

Here is minimal example to define a NTMLayer

# Neural Turing Machine Layer
memory = Memory((128, 20), memory_init=lasagne.init.Constant(1e-6),
    learn_init=False, name='memory')
controller = DenseController(l_input, memory_shape=(128, 20),
    num_units=100, num_reads=1,
    nonlinearity=lasagne.nonlinearities.rectify,
    name='controller')
heads = [
    WriteHead(controller, num_shifts=3, memory_shape=(128, 20),
        nonlinearity_key=lasagne.nonlinearities.rectify,
        nonlinearity_add=lasagne.nonlinearities.rectify,
        learn_init=False, name='write'),
    ReadHead(controller, num_shifts=3, memory_shape=(128, 20),
        nonlinearity_key=lasagne.nonlinearities.rectify,
        learn_init=False, name='read')
]
l_ntm = NTMLayer(l_input, memory=memory, controller=controller, heads=heads)

For more detailed examples, check the examples folder. If you would like to train a Neural Turing Machine on one of these examples, simply run the corresponding script, like

PYTHONPATH=. python examples/copy-task.py

Tests

This projects has a few basic tests. To run these tests, you can run the py.test on the project folder

venv/bin/py.test ntm -vv

Known issues

Graph optimization is computationally intensive. If you are encountering suspiciously long compilation times (more than a few minutes), you may need to increase the amount of memory allocated (if you run it on a Virtual Machine). Alternatively, turning off the swap may help for debugging (with swapoff/swapon).

Note: Unlucky initialisation of the parameters might lead to a diverging solution (NaN scores).

Paper

Alex Graves, Greg Wayne, Ivo Danihelka, Neural Turing Machines, [arXiv]

Contributing

Please see the Contribution Guidelines.

Copyright

This library is provided by Snips as Open Source software. See LICENSE for more information.

ntm-lasagne's People

Contributors

tristandeleu avatar opocaj92 avatar michaelfester avatar

Watchers

James Cloos avatar paper2code - bot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.