AI::Nerl::Network - 3-layer neural network with backpropagation
use AI::Nerl::Network; use PDL; my $x = pdl([0,0,1,1], [0,1,0,1], [1,0,0,1]); my $y = pdl([1,1,0,1]); my $nn = AI::Nerl::Network->new( l1 => 3, # 3 inputs l2 => 18, # 18 hidden neurons l3 => 1, # 1 output alpha => .3, # learning rate lambda => .01, # 'squashing' parameter ); $nn->train($x,$y, passes=>45); my ($cost,$num_correct) = $nn->cost($x,$y); #$nn wasn't programmed with this input. could be anything: print $nn->run(pdl([0,0,0]));
Train with backpropagation using $x as input & $y as target. $x and $y are both pdls. If there are multiple cases, each one will occupy a column (dimension 2) of the pdl. If your dimensions are off, you will experience an pdl error of some sort.
number of passes.
$output = $nn->run($x);
($cost,$num_correct) = $nn->cost($x,$y);
Calculate the 'cost' of the network. This is basically the difference between the actual output ($nn->run($x)) and the the target output($y), added to the sum of the neural weights if you're penalizing weights with lambda. The cost should Always decrease after being trained with ($x,$y).
This function returns both the cost, and the number of "correct" responses if using output neurons for classification.
http://en.wikipedia.org/wiki/Feedforward_neural_network#Multi-layer_perceptron
http://en.wikipedia.org/wiki/Backpropagation
Zach Morgan <zpmorgan@gmail.com>
<zpmorgan@gmail.com>
Copyright 2012 by Zach Morgan
This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install AI::Nerl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm AI::Nerl
CPAN shell
perl -MCPAN -e shell install AI::Nerl
For more information on module installation, please visit the detailed CPAN module installation guide.