I’m just about to wrap up a weeks vacation before it’s back on the horse again – as I leave for the nucl.ai conference Sunday morning. If you’re going, maybe I’ll see you there? If not, you should go check out the live stream.
Anyway, so in my vacation I built a little project when I could find a bit of time here and there. It was inspired by work on a client project earlier in the year, where we looked at wiring up a neural network for analysis of a noisy sensor.
The problem at the time was that although I could find a few C# NN libraries here and there, they were either not really a good fit or had a not-so-open open-source license like GPL (good thing I don’t have comments enabled here, eh?).
Anyway, that felt a bit silly, so I figured that I’d at least get the ball rolling on a somewhat sane, MIT licensed, alternative. Either that or just have some fun with it until someone would point me at the obvious alternative solution, which I had overlooked in my earlier search.
In its initial shape, the library just lets you construct a layered network, randomize its weigths, train it with a straight forward implementation of back-propagation with adjustable learning rate and momentum, and of-course run it.
There is no serialisation interface yet, I’ll probably want to do a simplification pass over it, and I have a few edge case tests I’d like to run. However all of that is noted on the project TODO and shouldn’t amount to all that much work – in case you fancy taking a stab at it.
I did set up a little Unity project for testing though (the library itself does not depend on anything in Unity). It has a few debug views, a test scenario of the XOR case, and a curve visualisation of training error. Look, I uploaded several pretty pictures:
Feel like giving it a go? As mentioned, the license is MIT, so you can really do whatever with it. However should you want to contribute, pull requests are most welcome. I don’t know how much time I can spare on this next to contracts and Behave, but at least it was a fun thing to work-on-while-not-working.
Whatever the case, this is where you can find the repositories: