Git Product home page Git Product logo

neural-network's Introduction

Neural-Network

Overview

This solo project provides a configurable neural network written in C. The user can choose the number of input neurons, output neurons, number of hidden layers, and the number of neurons for each individual layers. The project was designed to use the MNIST handwritten digit training data. However, with some tweaks, the functionality can be expanded to use other training data that have been vectorized into normalized floating point variables.

In this post, you can learn about my journey where I went from knowing nothing about neural networks to building this project.

Configuring the Neural Network

In main.c, you can see the configuration is done with an int array config. The first element specifies the number of input neurons, the second specifies the number of hidden layers, and the rest tell the number of nerons for each layer. Note that the last hidden layer is considered the output layer.

You can also see that the function makeNeuralNetwork takes in two arguments. The first is a pointer to the config array, and the second specifies the length of the array. It is important that the config array makes sense in that the second int in the array should match the number of the rest elements. It is also important that the second argument of makeNeuralNetwork (the length of the array as the first argument) match the actual length of the config array that is passed in.

Training data

The project was developed with the MNIST handwritten digit training data in mind. This is evident in the test and image scripts where the training data should be in the csv format and be put inside a /data directory, which needs to be created by the user. Due to their sizes, it is not possible to include those training files on Github, but they can be found here.

neural-network's People

Contributors

benweitang avatar

Watchers

 avatar

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.