Salvador Fandiño García > AI-FANN > AI::FANN

Download:
AI-FANN-0.10.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  1
View/Report Bugs
Module Version: 0.10   Source  

NAME ^

AI::FANN - Perl wrapper for the Fast Artificial Neural Network library

SYNOPSIS ^

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];
    }
  }

DESCRIPTION ^

  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:

CONSTANTS ^

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

CLASSES ^

The classes defined by this package are:

AI::FANN

Wraps C struct fann types and provides the following methods (consult the C documentation for a full description of their usage):

AI::FANN->new_standard(@layer_sizes)

-

AI::FANN->new_sparse($connection_rate, @layer_sizes)

-

AI::FANN->new_shortcut(@layer_sizes)

-

AI::FANN->new_from_file($filename)

-

$ann->save($filename)

-

$ann->run($input)

input is an array with the input values.

returns an array with the values on the output layer.

  $out = $ann->run([1, 0.6]);
  print "@$out\n";
$ann->randomize_weights($min_weight, $max_weight)
$ann->train($input, $desired_output)

$input and $desired_output are arrays.

$ann->test($input, $desired_output)

$input and $desired_output are arrays.

It returns an array with the values of the output layer.

$ann->reset_MSE

-

$ann->train_on_file($filename, $max_epochs, $epochs_between_reports, $desired_error)

-

$ann->train_on_data($train_data, $max_epochs, $epochs_between_reports, $desired_error)

$train_data is a AI::FANN::TrainData object.

$ann->cascadetrain_on_file($filename, $max_neurons, $neurons_between_reports, $desired_error)

-

$ann->cascadetrain_on_data($train_data, $max_neurons, $neurons_between_reports, $desired_error)

$train_data is a AI::FANN::TrainData object.

$ann->train_epoch($train_data)

$train_data is a AI::FANN::TrainData object.

$ann->print_connections

-

$ann->print_parameters

-

$ann->cascade_activation_functions()

returns a list of the activation functions used for cascade training.

$ann->cascade_activation_functions(@activation_functions)

sets the list of activation function to use for cascade training.

$ann->cascade_activation_steepnesses()

returns a list of the activation steepnesses used for cascade training.

$ann->cascade_activation_steepnesses(@activation_steepnesses)

sets the list of activation steepnesses to use for cascade training.

$ann->training_algorithm
$ann->training_algorithm($training_algorithm)

-

$ann->train_error_function
$ann->train_error_function($error_function)

-

$ann->train_stop_function
$ann->train_stop_function($stop_function)

-

$ann->learning_rate
$ann->learning_rate($rate)

-

$ann->learning_momentum
$ann->learning_momentum($momentun)

-

$ann->bit_fail_limit
$ann->bit_fail_limit($bfl)

-

$ann->quickprop_decay
$ann->quickprop_decay($qpd)

-

$ann->quickprop_mu
$ann->quickprop_mu($qpmu)

-

$ann->rprop_increase_factor
$ann->rprop_increase_factor($factor)

-

$ann->rprop_decrease_factor
$ann->rprop_decrease_factor($factor)

-

$ann->rprop_delta_min
$ann->rprop_delta_min($min)

-

$ann->rprop_delta_max
$ann->rprop_delta_max($max)

-

$ann->num_inputs

-

$ann->num_outputs

-

$ann->total_neurons

-

$ann->total_connections

-

$ann->MSE

-

$ann->bit_fail

-

cascade_output_change_fraction
cascade_output_change_fraction($fraction)

-

$ann->cascade_output_stagnation_epochs
$ann->cascade_output_stagnation_epochs($epochs)

-

$ann->cascade_candidate_change_fraction
$ann->cascade_candidate_change_fraction($fraction)

-

$ann->cascade_candidate_stagnation_epochs
$ann->cascade_candidate_stagnation_epochs($epochs)

-

$ann->cascade_weight_multiplier
$ann->cascade_weight_multiplier($multiplier)

-

$ann->cascade_candidate_limit
$ann->cascade_candidate_limit($limit)

-

$ann->cascade_max_out_epochs
$ann->cascade_max_out_epochs($epochs)

-

$ann->cascade_max_cand_epochs
$ann->cascade_max_cand_epochs($epochs)

-

$ann->cascade_num_candidates

-

$ann->cascade_num_candidate_groups
$ann->cascade_num_candidate_groups($groups)

-

$ann->neuron_activation_function($layer_index, $neuron_index)
$ann->neuron_activation_function($layer_index, $neuron_index, $activation_function)

-

$ann->layer_activation_function($layer_index, $activation_function)

-

$ann->hidden_activation_function($layer_index, $activation_function)

-

$ann->output_activation_function($layer_index, $activation_function)

-

$ann->neuron_activation_steepness($layer_index, $neuron_index)
$ann->neuron_activation_steepness($layer_index, $neuron_index, $activation_steepness)

-

$ann->layer_activation_steepness($layer_index, $activation_steepness)

-

$ann->hidden_activation_steepness($layer_index, $activation_steepness)

-

$ann->output_activation_steepness($layer_index, $activation_steepness)

-

$ann->num_layers

returns the number of layers on the ANN

$ann->layer_num_neurons($layer_index)

return the number of neurons on layer $layer_index.

$ann->num_neurons

return a list with the number of neurons on every layer

AI::FANN::TrainData

Wraps C struct fann_train_data and provides the following method:

AI::FANN::TrainData->new_from_file($filename)

-

AI::FANN::TrainData->new($input1, $output1 [, $input2, $output2, ...])

$inputx and $outputx are arrays with the values of the input and output layers.

AI::FANN::TrainData->new_empty($num_data, $num_inputs, $num_outputs)

returns a new AI::FANN::TrainData object of the sizes indicated on the arguments. The initial values of the data contained inside the object are random and should be set before using the train data object for training an ANN.

$train->data($index)

returns two arrays with the values of the input and output layer respectively for that index.

$train->data($index, $input, $output)

$input and $output are two arrays.

The input and output layers at the index $index are set to the values on these arrays.

$train->shuffle

-

$train->scale_input($new_min, $new_max)

-

$train->scale_output($new_min, $new_max)

-

$train->scale($new_min, $new_max)

-

$train->subset($pos, $length)

-

$train->num_inputs

-

$train->num_outputs

-

$train->length

-

INSTALLATION ^

See the README file for instruction on installing this module.

BUGS ^

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.

SEE ALSO ^

FANN homepage at http://leenissen.dk/fann/index.php.

COPYRIGHT AND LICENSE ^

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.

syntax highlighting: