2 ms·
I'm just going to suggest this as well. When working with neural networks, you can see the learning curve for them go down massively if you understand linear al
by agibsonccc 13y ago
I'm just going to suggest this as well. When working with neural networks, you can see the learning curve for them go down massively if you understand linear algebra.
Numpy based neural networks are a lot more digestable as far as understanding all of the moving parts due to the easy syntax.
Neural nets are usually verbose if you use an object oriented representation. Things like feedforward and backpropagation don't require loops if you know how to think about individual neurons and weight matrices.
Also, for working with them, here's something that cleared up a lot for me: when initializing neuron weights, it's randomly initialized. It seemed like magic to me at first and kept tricking me up when getting started with them.
For those who do the JVM, I'm working on finishing up a library for myself to use in various bits of work I do.
Java based, but you get access to fortran matrix routines, and it's interopable with scala and the like as well.
https://github.com/agibsonccc/sda-jblas https://github.com/agibsonccc/sda-jblas
For those of you who need hadoop or want to scale out neural networks, I'm going to suggest a friend of mine's iterative reduce project for neural nets on hadoop.
https://github.com/jpatanooga/Metronome https://github.com/jpatanooga/Metronome
I just finished up a parallel training setup I'm going to release based on this for neural nets as well. When working with them, you'll discover crazy long training times. Multicore tends to make things easy if you know how to balance out the weights though.
I'd be happy to answer any other questions as well.