Fast Artificial Neural Network Library


Project Administrator:
Steffen Nissen (
– Creator and maintainer of the fann library

Contributors (Alphabetically):
Adrian Spilca (
– Testing and insightful comments

Alexandre Zabot
– Made the function fann_create_train_from_callback

Alessandro Pietro Bardelli
– Created OpenMP support for FANN

Alexandros Stergiakis (
– TCL Bindings

Casimiro de Almeida Barreto (
– Converted Windows Squeak Smalltalk bindings to Linux

Chucky Ellison (cme at freefour dot com)
– Squeak Smalltalk bindings (Windows)

Davide Morelli (info at
– Pure Data (PD) bindings

Degski (degski at
– SWI Prolog bindings

Evan Nemerson (
– Added functionality to the C library
– Documentation
– PHP extension

Freegoldbar (freegoldbar at yahoo com)
– Added functionality to the C library
– Visual Studio files
– Mathematica extension
– Soap interface (With examples in Standard ML, VB.Net, C#)
– C++ wrapper

Gil Megidish (
– Updates to python bindings

Gildas Menier (gildas.menier (at)
– Visual Prolog 7 bindings

Jakub Zelenka
– PHP binding for version 2 of FANN

James Bates (
– C# .Net wrapper

Joslwah (
– Optimised port for ppc64/altivec

Lucas Hermann Negri (
– NeuralView (GUI)

Maurício Pereira Maia (
– Delphi Bindings

Michael Vogt (
– Help making the debian package
– Upload of package to debian distribution

Salvador Fandino Garci­a Salvador (
– PERL bindings

Steven Levis (
– Copy function

Steven Miers (
– Ruby Bindings

Søren Hauberg (hauberg _at_ gmail _dot_ com)
– Bindings for GNU Octave

Thomas Leibovici (
– Momentum training

Vincenzo Di Massa ( at_domain
– Python extension

If you have contributed to the library, but you are not on the list, please just send me an email.


  1. Vitali Vitali
    April 13, 2011    

    Good day! Could You help me to create the project with C++ wrapper?
    I use Visual Studio 2008 and when I compile my project then recieve an errors:

    * error LNK2019: unresolved external symbol __imp__fann_destroy@4 referenced in function “public: void __thiscall FANN::neural_net::destroy(void)” (?destroy@neural_net@FANN@@QAEXXZ)
    * error LNK2019: unresolved external symbol __imp__fann_get_user_data@4 referenced in function “public: void __thiscall FANN::neural_net::destroy(void)” (?destroy@neural_net@FANN@@QAEXXZ)
    * fatal error LNK1120: 2 unresolved externals

    How can I set options of my project.

    Thank’s for future anwser.

  2. Eugene Mar Eugene Mar
    August 4, 2011    


    I am working on a research project at Oregon State University in the GeoScience Department. I am considering using FANN and was wondering whether FANN can be used to implement an Evolving Cascade Neural Network. Unlike the traditional Cascade Neural Network that requires each new neuron to have all inputs and previous neuron layers, the Evolving Cascade Neural Network requires that each new neuron have inputs from previous neuron layers and only relevant inputs. Please let me know whether FANN can be used for this and how I should proceed.



  3. Kyon Kyon
    December 7, 2011    

    Hello,Could you tell me that if FANN can create RBF(Radical Basis Function)-ANN and train it please? Thanks a lot!

  4. Gus Doh Gus Doh
    October 2, 2012    

    I real appreciate your library. Those who contribute this kind of open source libary are real heros!

  5. April 28, 2014    

    Hello guys,

    I was going through this article that Steffen wrote (, trying to reproduce with the steps provided.

    I’m almost done, but for some reason I can’t get past this :
    In the last part, the test part where the code identifies the language, I’m getting an error: argument type float* is incompatible with parameter of type fann_type*

    Here is an image :
    can you give some insight in what I have to do? I would really appreciate it.



  6. Emmanuel Emmanuel
    December 4, 2014    

    Thanks a lot for your library it’s very useful !! I have a question on the training algorithm.

    I have a simple ann to train data, but I have huge amount of data and I’m not able to train all of them at the same time.
    So I’d like to do a first train, close the program, and train again on new data and etc …

    So my prog looks like :
    struct fann_train_data * train_data1 //a first training dataset
    struct fann *ann= fann_create_standard(num_layers,train_data1->num_input, train_data1->num_output); //I create man network :
    fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL);
    fann_init_weights(ann, train_data1);
    fann_train_on_data(ann, train_data1, max_epochs, epochs_between_reports, desired_error);/Training on the first dataset
    fann_save(ann,file_output); //And finally Save it

    and after closing the program I do :
    struct fann_train_data * train_data2 //a second training dataset
    ann=fann_create_from_file(file_output); // I re-open the ann
    fann_cascadetrain_on_data(ann, train_data2, max_epochs, epochs_between_reports, desired_error);
    ann_save(ann,file_output); //Save it
    and etc …

    I would like to know it the ann will be training on each data set ?


Leave a Reply