Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added convolutional neural network (CNN) for MNIST digit classification. #7

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

capn-freako
Copy link

This pull request adds a convolutional neural network (CNN) for MNIST digit classification.

There are actually two CNN models included in the new examples/MNIST/MNIST_cnn.hs file:

  • A complex model, composed of two convolutional layers, both using a maxPool operation to condense their outputs.
    This model doesn't work (It doesn't learn.). And it is, currently, commented out in the code. It is my hope to get it working soon.

  • A simple model, using a single convolutional layer and no maxPooling.
    This model achieves 90% accuracy after 550 generations.

The new executable is called MNIST_cnn.

I run it, like this:

stack build
stack exec MNIST_cnn

This first version of a CNN digit classifier compiles and runs.
However, it doesn't learn. Either I've got a bug in my code, or
the structure I've chosen just isn't very good for digit classification.
Code is now wired to output what I believe is one of the 5x5 convolution
kernels in the first processing layer, every 5 iterations. And it doesn't
appear to be changing.

Might this be caused by "representing" maxPool as a differentiable function?
Might that be breaking the back-propagation?
reached accuracy of 0.9018 after 550 generations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants