Skip to content

DeepSea is a Deep Learning framework written in C. It has already been tested with MNIST handwritten digits dataset.

Notifications You must be signed in to change notification settings

phbouchet/deep-sea

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepSea

What is DeepSea?

DeepSea is a play on words. I originally intended to name this "DeepC", however that name was taken, so I chose the next best thing.

DeepSea is an experimental deep learning framework for the C programming language.

The framework's network is matrix based, calculations are performed via matrix operations, allowing for easy implementation of feed forward, backpropagation and gradient descent algorithms.

Features

The framework currently supports several features, such as:

  • Stochastic Gradient Descent
  • Batch Gradient Descent
  • Mini-Batch Gradient Descent
  • MNIST data format compatibility
  • Saving & Loading network parameters (weights & biases)
  • Matrix operations

Network accuracy

An OCR was implemented and tested with hand written digits from the MNIST dataset, and has achieved an accuarcy of 82% on a test set of 10000 images, while only being trained on 4096 images out of the 60000 total images of the MNIST dataset, due to CPU limitations. Plans to implement CPU/GPU acceleration are currently a work in progress.

A pretrained network model pretrained_network.saveis provided to test the network.

MNIST dataset

To test the network with the dataset, simply execute the fetch_data script to download the MNIST dataset, and execute the DeepSea. Realistically, the framework can be tested on any MNIST dataset.

Running the project

No additional dependencies are required to compile the project.

  • Compile the source code
make mkdir # Generates the bin/ and obj/ folders
           # Only needs to be run once.
make
  • Execute the binary: Optional path to saved network network.save argument to load and evaluate an existing network. If no arguments are provided, the program will create, train and save a new network.
./bin/deepsea [network.save]

Roadmap

  • Design efficient memory based neural network structure
  • Implement matrix library
  • Implement feed forward algorithm
  • Implement backpropagation algorithm
  • Test neural network with basic XOR network
  • Add saving and loading capabilities for the network
  • Implement mini batch training in the network for prediction versatility
  • Implement dataset API to easily pass data into the network
  • Test neural network with OCR network trained to recognize handwritten digits
  • Parallelize gradient descent with threads
  • Implement basic cli interface to interact with the network

About

DeepSea is a Deep Learning framework written in C. It has already been tested with MNIST handwritten digits dataset.

Resources

Stars

Watchers

Forks

Releases

No releases published