9
$\begingroup$

I'd like to do some experimenting with neural net evolution (NEAT). I wrote some GA and neural net code in C++ back in the 90s just to play around with, but the DIY approach proved to be labor-intensive enough that I eventually dropped it.

Things have changed a lot since then, and there are lots of very nice open source libraries and tools around for just about any interest one might have. I've Googled different open source libraries (e.g. DEAP), but I could use some help choosing one that would be a good fit...

  • I spent much of my time writing code to visualize what was going on (neural net state, population fitness) or final results (graphs, etc).

    Maybe this would have to be fulfilled by a separate open-source library, but visualization support would be something that would allow me to spend more time on the problem/solution and less on implementation details.
  • I know C/C++, Java, C#, Python, Javascript and a few others. Something that's a nice trade-off between a higher-level language and good performance on home hardware would be a good choice.

Can someone with experience suggest a good open source library or set of tools?

$\endgroup$
  • $\begingroup$ This question belongs to softwarerecs.stackexchange.com. Btw, to me, your question seems to be very broad and therefore should be closed, anyhow. $\endgroup$ – nbro May 23 '17 at 17:13
  • $\begingroup$ @nbro - Thanks, I suspected there was a better place for this, but didn't know about softwarerecs. $\endgroup$ – Scott Smith May 23 '17 at 17:15
  • $\begingroup$ Can those who up-voted this question tell us why? $\endgroup$ – quintumnia May 25 '17 at 10:01
3
$\begingroup$

as this is written in Javascript and does not (yet) offer GPU support, it is quite slow. However, it is very nice to fiddle around with flexible network architectures. The only visualisation that it offers right now is a map of network architecture, but graphs could easily be implemented.

https://github.com/wagenaartje/neataptic

$\endgroup$
2
$\begingroup$

Well, if you choose TensorfFlow to work with, you get TensorBoard as part of the package. That might be something close to what you're looking for.

And with TensorFlow, you can code in C++, Python, and a few other languages (I think there are both Ruby and Java bindings as well, probably others by now).

$\endgroup$
2
$\begingroup$

https://github.com/josephmisiti/awesome-machine-learning

has many useful resources. Please take a look.

$\endgroup$
2
$\begingroup$

There is also DXNN, which is as you described, a neuroevolutionary system, it is written in Erlang. https://github.com/CorticalComputer/DXNN2

I did some work on it to make it modular, so you use it as a library and keep your code/application isolated.

Here is a code example, which downloads DXNN as a library. it also generates gnuplot ready data files for visualization.

$\endgroup$
2
$\begingroup$

Fann (http://leenissen.dk/fann/wp/) is a free open source neural network library.

FANN Features:

  • Multilayer Artificial Neural Network Library in C
  • Backpropagation training (RPROP, Quickprop, Batch, Incremental)
  • Evolving topology training which dynamically builds and trains the ANN (Cascade2)
  • Easy to use (create, train and run an ANN with just three function calls)
  • Fast (up to 150 times faster execution than other libraries)
  • Versatile (possible to adjust many parameters and features on-the-fly)
  • Well documented (An easy to read introduction article, a thorough reference manual, and a 50+ page university report describing the implementation considerations etc.)
  • Cross-platform (configure script for linux and unix, dll files for windows, project files for MSVC++ and Borland compilers are also reported to work)
  • Several different activation functions implemented (including stepwise linear functions for that extra bit of speed)
  • Easy to save and load entire ANNs
  • Several easy to use examples
  • Can use both floating point and fixed point numbers (actually both float, double and int are available)
  • Cache optimized (for that extra bit of speed)
  • Open source, but can still be used in commercial applications (licenced under LGPL)
  • Framework for easy handling of training data sets
  • Graphical Interfaces
  • Language Bindings to a large number of different programming languages
  • Widely used (approximately 100 downloads a day)
$\endgroup$
2
$\begingroup$

For genetic algorithms, I have written GeneticSharp.

A multi-platform genetic algorithm library for .NET Core and .NET Framework. The library has several implementations of GA operators, like: selection, crossover, mutation, reinsertion and termination.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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