Gop-Net - Neural Networks in C

#c #projects #machine #learning

During the first year of my undergraduate, I had relatively little exposure to Computer Science topics, and this had lead me to develop an infatuation with programming in C (against my better knowledge, but that's a story for another time).

Given the popularity of Machine learning at the time (it was being heavily pushed on us as undergraduates), this inevitably lead to the following project: GopNet - Neural networks in pure C1.

As those familiar with the topic will known, the implementation of neural networks is really just a matter of linear transformations - whether this project is interesting will just be dependent on it's what it was used for. In this case, I was actually able to use this machine learning library to train on the MNIST framework2 - I even got an accuracy of ~90%3.

The readme on the page also shares some interesting information - even though this was project was done quite early in my CS career, my opions on ML had even then settled to the ones that I still hold today:

Neural Networks… Personally I find that the overhyping of neural network research areas to be a counterproductive act. Don't get me wrong. Neural networks are interesting no doubt, and I'm definitely not a person who feels that "the complexity" of the human mind is something outside the reach of artificial agents, but I find the levels to which neural nets are presented these days to be an exaggeration.

You can find the project at: Gop-net-project-page



To be more specific, the real motivation for this project was actually trying to implement a matrix library in C, and from there I decided to try implementing neural networks to test the library.


The application assumes that the MNIST library is provided preprocessed into CSV files to simplify the input output processing.


I realize that this score isn't that impressive, in the context of the state of the art, but for a handrolled implementation in C I was quite proud of it.