Contact: Logan Bruns logan@gedanken.org
The Abstraction and Reasoning Corpus (ARC) attempts to provide a benchmark on abstract reasoning given a limited number of visual priors. We train a deep learning model to run against this benchmark and show that it is capable of recognizing certain types of tasks from a few examples and then perform these tasks at least to some extent. The best test accuracy was .94 and then IoU was .56 but the qualitative analysis of the predictions is perhaps more interesting. Observations are made about which portions of the data preprocessing and architecture are important and why.
Makefile: top level makefile to run training, start tensorboard and start notebook server
deeparc.py: training script
arc_model.py: model class containing model architecture and losses
layer_utils.py: utilities for creating model layers
data_transforms.py: dataset transforms for creating features and augmenting data
arc.py: ARC dataset loader
json_to_tfrecord.py: script to convert dataset to tfrecord format
environment.yml: conda environment yaml for creating python virtual environment
Experiments.md: brief experiments logs
data/ directory to download dataset to and store transformed forms
experiments/ directory to hold experiment checkpoints and tensorboard logs
$ conda env create --name deep-module-arc --file environment.yml
$ conda activate deep-module-arc
Download ARC kaggle dataset zip from kaggle:
https://www.kaggle.com/c/abstraction-and-reasoning-challenge/data
$ cd data
$ unzip /path/to/abstraction-and-reasoning-challenge.zip
$ python json_to_tfrecord.py
$ make tensorboard
$ make train
Go to http://localhost:6006/ or http://hostname:6006/ and click images tab to see examples of the training context images, predictions, and ground truth.