http://qs321.pair.com?node_id=355979

talwyn has asked for the wisdom of the Perl Monks concerning the following question:

Hey all.... playing with AI for the first time...So I got AI::Neuralnet::backprop to play with. I thought how about trying to get the thing to identify even numbers? Well I failed miserably ... I attached my code and the sample output it produced. It got numbers wrong that I explicitly gave it in its pattern set to learn. I don't understand the problem with the code and was trying to learn how the neural net thingy works so I'm a bit mystified. Am I missing something? Any help or suggestions welcome.

CODE

```       use AI::NeuralNet::BackProp;

my \$net = new AI::NeuralNet::BackProp(2,5,1);
# Add a small amount of randomness to the network

\$net->random(0.001);
\$net->range ([0,1]);

\$net->debug (4);

# Create a data set to learn
my @set = (
[ 0,0,0,0,0 ], [ 1 ],
[ 0,0,0,1,0 ], [ 1 ],
[ 0,0,1,0,0 ], [ 1 ],
[ 0,0,1,1,0 ], [ 1 ],
[ 0,0,0,0,1 ], [ 0 ],
[ 0,0,0,1,1 ], [ 0 ],
[ 0,0,1,0,1 ], [ 0 ],
[ 0,0,1,1,1 ], [ 0 ],
);

my \$f = \$net->learn_set (\@set);
print "Forgetfulness: \$f unit\n";

# Run a test phrase through the network

for ( \$i = 0 ; \$i < 17 ;\$i++){

@bit= (0,0,0,0,0); #reset bits

\$bit[0] = 1 if ( (\$i & 16) == 16 );
\$bit[1] = 1 if ( (\$i & 8) == 8 );
\$bit[2] = 1 if ( (\$i & 4) == 4 );
\$bit[3] = 1 if ( (\$i & 2) == 2 );
\$bit[4] = 1 if ( (\$i & 1) == 1 );

print "Testing \$i   @bit -> ";
my \$result = \$net->run( \@bit);

}
RESULTS
```Forgetfulness: 0.0000000000
Testing 0   0 0 0 0 0 -> 1
Testing 1   0 0 0 0 1 -> 1
Testing 2   0 0 0 1 0 -> 1
Testing 3   0 0 0 1 1 -> 0
Testing 4   0 0 1 0 0 -> 1
Testing 5   0 0 1 0 1 -> 0
Testing 6   0 0 1 1 0 -> 0
Testing 7   0 0 1 1 1 -> 0
Testing 8   0 1 0 0 0 -> 1
Testing 9   0 1 0 0 1 -> 0
Testing 10   0 1 0 1 0 -> 0
Testing 11   0 1 0 1 1 -> 0
Testing 12   0 1 1 0 0 -> 0
Testing 13   0 1 1 0 1 -> 0
Testing 14   0 1 1 1 0 -> 0
Testing 15   0 1 1 1 1 -> 0
Testing 16   1 0 0 0 0 -> 1