CognitiveCL Neural Network API

TEAM COGNITIVE (Samuel Crawford Loveys, Alejandro Lobo Mujica)

Inspiration

Google's Tensorflow API has GPU support for only Nvidea GPUs, this leaves anybody
with other GPUs rendered to a huge disadvantage in implementations of NN. It
gives Nvidia a monopoly on common neural network acceleration.

What it does

It provides a simple interface for creating neural networks with a high level of customization. User can create networks of any sizes provided they create the data.

How we built it

We built it with pyopencl core acceleration tool, furthermore we created the individual neurons directly in opencl and the API in python.

Challenges we ran into

We didn't run into many obstacles at the beginning but as we delved deeper into the implementation we encountered that back propogation of neural networks is much more complicated than we originally imagined. This part easily took up most of our time but in the end we got it mostly working.

Accomplishments that we're proud of

The design of the neuron structure that we came up with allowed us to train the network using fewer waits.
The fact that its made with opencl allows this API to be used with any openCL enabled device.
Its also always a treat to hang out with similar minded people and develop interesting ideas :)

What we learned

We learned how neural networks are structured and how they can teach themselves to solve problems.
Opencl was a joy to tinker with and we look forward to playing with it some more.
How openCL runs on hardware.

What's next for CognitiveCL Neural Network API

We aim to provide optimization as well as many bug fixes that affect our API as it is now. Hopefully features such as different learning methods can be implemented in the future.