Home

Awesome

Cortex TravisCI

Neural networks, regression and feature learning in Clojure.

Cortex has been developed by ThinkTopic in collaboration with Mike Anderson.

<a href="https://www.thinktopic.com"><img src="https://cloud.githubusercontent.com/assets/17600203/21554632/6257d9b0-cdce-11e6-8fc6-1a04ec8e9664.jpg" width="200"/></a>

Mailing List

https://groups.google.com/forum/#!forum/clojure-cortex

Usage

Clojars Project

All libraries are released on clojars. Cortex is not 1.0 yet preliminary and you should expect quite a few things to change over time but it should allow you to train some initial classifiers or regressions. Note that the save format has not stabilized and although we do just save edn data in nippy format it may require some effort to bring versions of saved forward.

Cortex Design

Design is detailed here: Cortex Design Document

Please see the various unit tests and examples for training a model. Specifically see: mnist verification

Also, for an example of using cortex in a more real-world scenario please see: mnist example.

Existing Framework Comparisons

TODO:

Getting Started:

GPU Compute Install Instructions

Ubuntu

$ sudo apt install nvidia-cuda-toolkit
reboot

Install cuDNN and copy the cuDNN files to the corresponding folders in the local cuda installation (probably at /usr/local/cuda). For reference, follow the "Installing cuDNN" section here.

To check everything is working, run $ nvidia-smi

You should now have cuda8.0 installed. Current master is 8.0, so if you're running 7.5 you will need to change the javacpp dependency in your project file of the mnist Example.

Mac OS

These instructions follow the gpu setup from Tensor Flow, i.e.:

Install coreutils and cuda:

$ brew install coreutils
$ brew tap caskroom/drivers
$ brew cask install nvidia-cuda

Add CUDA Tool kit to bash profile

export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$CUDA_HOME/lib"
export PATH="$CUDA_HOME/bin:$PATH"

Download the CUDA Deep Neural Network libraries.

Once downloaded and unzipped, moving the files:

$ sudo mv include/cudnn.h /Developer/NVIDIA/CUDA-8.0/include/
$ sudo mv lib/libcudnn* /Developer/NVIDIA/CUDA-8.0/lib
$ sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn* /usr/local/cuda/lib/

Should you see a jni linking error similar to this

Retrieving org/bytedeco/javacpp-presets/cuda/8.0-1.2/cuda-8.0-1.2-macosx-x86_64.jar from central
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jnicudnn in java.library.path, compiling:(think/compute/nn/cuda_backend.c
lj:82:28)
        at clojure.lang.Compiler.analyze(Compiler.java:6688)
        at clojure.lang.Compiler.analyze(Compiler.java:6625)
        at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:1009)

Make sure you have installed the appropriate CUDNN for your version of CUDA.

Windows

Some preliminary information about getting gpu-acceleration working on windows is available here: https://groups.google.com/forum/#!topic/clojure-cortex/hNFW1T_2PZc

See also:

Roadmap