Giter VIP home page Giter VIP logo

dnar's Introduction

Discrete Neural Algorithmic Reasoning

This repository contains the code to reproduce the experiments from "Discrete Neural Algorithmic Reasoning" paper.

Setup

Before running the source code, make sure to install the project dependencies:

pip install -r requirements.txt

Main experiments

Algorithms

  • Breadth-first search
  • Depth-first search
  • Minimum spanning tree (Prim's algorithm)
  • Maximum Independent Set (randomized)
  • Shortest paths (Dijkstra's algorithm)

Step-wise learning with hints

python training.py --config_path configs/*algorithm_name*_stepwise.yaml

Sequential learning with hints

python training.py --config_path configs/*algorithm_name*_sequential.yaml

For no-hint experiments, please set the use_hints: false in the corresponding config file.

States generation

You can find states (hints) generation procedures for each algorithm in state_algorithms.py.

Test examples

Also, you can directly test states transitions and attention ranges of the obtained model, as described in the Section 6 of the paper. You can find the examples of such tests in test_state_transition.py. For example, for BFS model, we can explicitly check whether an undiscovered node becomes discovered if it receives a message from a discovered node:

assert node_state_transition(model, sender_state=DISCOVERED, reciever_state=UNDISCOVERED) == DISCOVERED

We note that the hint sequence does not specify the edge along which the message will be sent, and the tests should take into account the actual dynamics of the particular model.

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.