I’ve been looking for a good Neural Network library to use with the AnnGram project and so far I’ve come across a couple of possibilities:
The top link on Google was an aptly named C# Neural network library. Overall, it looks clean and easy to use and is licensed under the GPL, so should work well for my needs. The framework has two types of training methods: genetic algorithms and backward propagation. In addition, there are at least three different activation functions included: linear, signmoid, and heaviside functions. The main problem with this framework is the spare documentation. The only that I’ve been able to find so far is a generated API reference and a few examples (using their included GUI framework).
I’ve used the AForge framework before as part of my experiments with the AudioVision project. It’s a strong framwork, much more complex and more powerful than the aforementioned library. From this article on CodePlex, the features of AForge.Neuro are pretty extensive. There are two different architectures (the first library only had one) and six different learning methods (compared to two). This also seems like a good match for the project, especially if it turns out I need the extra configuration options.
Somewhere between the first two libraries, NeuronDotNet has the best documentation of the three with full tutorials on most of its functionality. It has much of the same functionality as AForge.Neuro without the primary focus being elsewhere (AForge is primarily designed for image processing). In addition, this article on Primary Objects gives further example source code–extremely helpful in development.
Result
Overall, I’m not sure exactly which library I will choose to use. Mostly likely, I will switch at least once within the project as I become frustrated with my original choice. In any case, I’ll be sure to post my progress here.