Skip to content
Swizec Teller - a geek with a hatswizec.com

FANN - neural networks made easy

Convergence!

Over the weekend I was struck with the realization that I don't know _how to use neural networks in practice, damn it. _Even though a few months ago I realized what neural networks are, even though I've tried implementing them, even though I've used them in a class setting ...

How the hell do you use these things in real life!?

Implement from scratch? ... no that can't be it.

Find a library, write some code, run some tests, fiddle with features, run a test, fiddle with features, realize everything is slow, decide to use more layers, fiddle with features, play around with activation functions, run a test, fiddle with features, rewrite the code because it's a mess, fiddle with features, run a test, run the network, run more tests and so on and on ad nauseum.

That can't be it either ...

FANN

Looking far and wide for a good library to use I stumbled upon FANN - Fast Artificial Neural Networks.

Fast Artificial Neural Network Library is a free open source neural network library, which implements multilayer artificial neural networks in C with support for both fully connected and sparsely connected networks. Cross-platform execution in both fixed and floating point are supported. It includes a framework for easy handling of training data sets. It is easy to use, versatile, well documented, and fast. Bindings to more than 15 programming languages are available. An easy to read introduction article and a reference manual accompanies the library with examples and recommendations on how to use the library. Several graphical user interfaces are also available for the library.

Perfect!

Not only has someone gone to the trouble of implementing everything and making sure it works - nothing sucks more than figuring out whether you're using your learning software wrong or it's just buggy - they even gave it all the fiddly features I need!

It gets better! There's a slew of graphical interfaces -> You get to play with the fiddly bits without even knowing what you're doing! Yes!

Put the data in the fann format, load it up, and away you go. Playing around until you figure out what you're looking for, then you can just implement the same thing with the FANN binding of your choice.

It can suggest a good training algo

You get to set up the neural network

Fiddly bits!

Watch it converge in real time

Done in a few hours

FANN really saved my skin last night. At least the GUI did. I still haven't solved my problem - trying to predict how many people will read a whole post - but it took me literally a couple of minutes to realize that the same network can't be used to predict two outputs since it won't even converge.

That's something very specific to the problem.

I also realized the networks were overfitting my data, then performing poorly on the test.

Another specific thing.

It is because of this incredibly problem-specific nature of most work involving neural networks that having tools like these is really important. Who wants to fiddle around with implementing all this stuff by hand for several hours before even running the first tests?

I probably ran twenty or thirty different configurations in the space of three hours last night. Could I have done that without a simple tool? Probably not - wouldn't even have the first configuration implemented by now.

Now if only the GUI tool calculated precision and recall instead of mean standard error ...

Enhanced by Zemanta

Did you enjoy this article?

Published on February 20th, 2012 in Uncategorized

Learned something new?
Want to become a high value JavaScript expert?

Here's how it works 👇

Leave your email and I'll send you an Interactive Modern JavaScript Cheatsheet 📖right away. After that you'll get thoughtfully written emails every week about React, JavaScript, and your career. Lessons learned over my 20 years in the industry working with companies ranging from tiny startups to Fortune5 behemoths.

Start with an interactive cheatsheet 📖

Then get thoughtful letters 💌 on mindsets, tactics, and technical skills for your career.

"Man, love your simple writing! Yours is the only email I open from marketers and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"

~ Ashish Kumar

Join over 10,000 engineers just like you already improving their JS careers with my letters, workshops, courses, and talks. ✌️

Have a burning question that you think I can answer? I don't have all of the answers, but I have some! Hit me up on twitter or book a 30min ama for in-depth help.

Ready to Stop copy pasting D3 examples and create data visualizations of your own?  Learn how to build scalable dataviz components your whole team can understand with React for Data Visualization

Curious about Serverless and the modern backend? Check out Serverless Handbook, modern backend for the frontend engineer.

Ready to learn how it all fits together and build a modern webapp from scratch? Learn how to launch a webapp and make your first 💰 on the side with ServerlessReact.Dev

Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com

By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️