| AI::FANN(3pm) | User Contributed Perl Documentation | AI::FANN(3pm) |
AI::FANN - Perl wrapper for the Fast Artificial Neural Network library
Train...
use AI::FANN qw(:all);
# create an ANN with 2 inputs, a hidden layer with 3 neurons and an
# output layer with 1 neuron:
my $ann = AI::FANN->new_standard(2, 3, 1);
$ann->hidden_activation_function(FANN_SIGMOID_SYMMETRIC);
$ann->output_activation_function(FANN_SIGMOID_SYMMETRIC);
# create the training data for a XOR operator:
my $xor_train = AI::FANN::TrainData->new( [-1, -1], [-1],
[-1, 1], [1],
[1, -1], [1],
[1, 1], [-1] );
$ann->train_on_data($xor_train, 500000, 1000, 0.001);
$ann->save("xor.ann");
Run...
use AI::FANN;
my $ann = AI::FANN->new_from_file("xor.ann");
for my $a (-1, 1) {
for my $b (-1, 1) {
my $out = $ann->run([$a, $b]);
printf "xor(%f, %f) = %f\n", $a, $b, $out->[0];
}
}
WARNING: THIS IS A VERY EARLY RELEASE,
MAY CONTAIN CRITICAL BUGS!!!
AI::FANN is a Perl wrapper for the Fast Artificial Neural Network (FANN) Library available from <http://fann.sourceforge.net>:
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. PHP, C++, .NET, Python, Delphi, Octave, Ruby, Pure Data and Mathematica bindings are available. A reference manual accompanies the library with examples and recommendations on how to use the library. A graphical user interface is also available for the library.
AI::FANN object oriented interface provides an almost direct map to the C library API. Some differences have been introduced to make it more perlish:
$train_data->shuffle;
$ann->bit_fail_limit($limit); # sets the bit_fail_limit
$bfl = $ann->bit_fail_limit; # gets the bit_fail_limit
Pairs of get/set functions requiring additional indexing arguments are also wrapped inside dual accessors:
# sets:
$ann->neuron_activation_function($layer_ix, $neuron_ix, $actfunc);
# gets:
$af = $ann->neuron_activation_function($layer_ix, $neuron_ix);
Important: note that on the Perl version, the optional value argument is moved to the last position (on the C version of the "set_" method it is usually the second argument).
C Perl
-----------------------------------------------------------
fann_create_from_file => new_from_file
fann_create_standard => new_standard
fann_get_num_input => num_inputs
fann_get_activation_function => neuron_activation_function
fann_set_activation_function => ^^^
fann_set_activation_function_layer => layer_activation_function
fann_set_activation_function_hidden => hidden_activation_function
fann_set_activation_function_output => output_activation_function
All the constants defined in the C documentation are exported from the module:
# import all... use AI::FANN ':all'; # or individual constants... use AI::FANN qw(FANN_TRAIN_INCREMENTAL FANN_GAUSSIAN);
The values returned from this constant subs yield the integer value on numerical context and the constant name when used as strings.
The constants available are:
# enum fann_train_enum: FANN_TRAIN_INCREMENTAL FANN_TRAIN_BATCH FANN_TRAIN_RPROP FANN_TRAIN_QUICKPROP # enum fann_activationfunc_enum: FANN_LINEAR FANN_THRESHOLD FANN_THRESHOLD_SYMMETRIC FANN_SIGMOID FANN_SIGMOID_STEPWISE FANN_SIGMOID_SYMMETRIC FANN_SIGMOID_SYMMETRIC_STEPWISE FANN_GAUSSIAN FANN_GAUSSIAN_SYMMETRIC FANN_GAUSSIAN_STEPWISE FANN_ELLIOT FANN_ELLIOT_SYMMETRIC FANN_LINEAR_PIECE FANN_LINEAR_PIECE_SYMMETRIC FANN_SIN_SYMMETRIC FANN_COS_SYMMETRIC FANN_SIN FANN_COS # enum fann_errorfunc_enum: FANN_ERRORFUNC_LINEAR FANN_ERRORFUNC_TANH # enum fann_stopfunc_enum: FANN_STOPFUNC_MSE FANN_STOPFUNC_BIT
The classes defined by this package are:
Wraps C "struct fann" types and provides the following methods (consult the C documentation for a full description of their usage):
returns an array with the values on the output layer.
$out = $ann->run([1, 0.6]);
print "@$out\n";
It returns an array with the values of the output layer.
Wraps C "struct fann_train_data" and provides the following method:
The input and output layers at the index $index are set to the values on these arrays.
See the README file for instruction on installing this module.
Only tested on Linux.
I/O is not performed through PerlIO because the C library doesn't have the required infrastructure to do that.
Send bug reports to my email address or use the CPAN RT system.
FANN homepage at <http://leenissen.dk/fann/index.php>.
Copyright (C) 2006-2008 by Salvador Fandiño (sfandino@yahoo.com).
This Perl module is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
The Fast Artificial Neural Network Library (FANN) Copyright (C) 2003-2006 Steffen Nissen (lukesky@diku.dk) and others.
Distributed under the GNU Lesser General Public License.
| 2024-03-31 | perl v5.38.2 |