I would love to learn how to create my own neural network from scratch so i can understand them better. My goal it's not so much to use their perception capabilities (classifying pictures) as it is to use them the other way around.

I'm looking for a starting place. I haven't found anything using Google.

Sorry if for some reason this type off request is prohibited here.

  • $\begingroup$ Most of the existing and popular CNN libraries are in Python, C++. For java have a look at deeplearning4j.org $\endgroup$ – Ankur Apr 27 '17 at 7:14
  • $\begingroup$ Thanks Ankur it looks like a great project. But I'm looking for.. The recipe for the cake and step by step instructions. Not the cake itself. $\endgroup$ – Tasha Apr 27 '17 at 10:43
  • 1
    $\begingroup$ have you learned the mathematics of neural networks? If not, then you should start from there. Check out neuralnetworksanddeeplearning.com $\endgroup$ – Ankur Apr 27 '17 at 11:42
  • $\begingroup$ @Ankur the subject should start as soon as possible before the big brothers analyse the question. $\endgroup$ – quintumnia Apr 27 '17 at 15:32

I recommend you to take a look at Handbook of Neuroevolution Through Erlang

It guides you through the development of an neuroevolutionary substrate encoded system.

You can read the first few chapters where it show you how to code a neural network.

Then shows you how to add plasticity and other features.

Note that it doesn't cover back propagation, thus the math is not complex.

Erlang or similar functional languaes is fun to write NN with. But once you grasp the concept you can use any language you prefer.

Here is a repository for the "final" system DXNN2 on Github

And here is the code used in the book Book code on Github


For the classic neural network part of the CNN, a great starting place for beginners is the book Michael Nielsen published at Neural Networks and Deep Learning. He uses Python for his examples but explains everything in details, so it shouldn't be hard to implement the same concepts in any other higher programming language. I studied his code in detail and can't think of any concepts that are very Python specific. You might have to look up some functions like "zip" if you are totally new to Python but the documentation of those functions is easy to follow for a developer.

If you haven't worked with neural networks before, the amount of mathematics required may seem threatening at first, especially if you are not too familiar with gradient decent and partial derivatives. But following the recommended book (and some look-ups in Wikipedia) should teach you everything you need to implement the neural network aspect of your project in Java or C#.

The other required layers for your CNN - especially the convolution layer - depend more on the actual problem you are trying to solve. You said:

My goal it's not so much to use their perception capabilities (classifying pictures) as it is to use them the other way around.

I don't really understand what you are trying to achieve with your CNN, maybe you can elaborate more. Your convolution and pooling layer might look quite different from typical implementations used in image recognition. The basic principles of those layers can be found e.g. on Wikipedia as a starting point. Without deeper knowledge of your goal it is hard to recommend anything more specific.


Not the answer you're looking for? Browse other questions tagged or ask your own question.