Mercurial > projects > aid
diff trunk/perceptron_test.d @ 2:9655c8362b25
Added the Perceptron class and the perceptron_test testing program.
author | revcompgeek |
---|---|
date | Sat, 05 Apr 2008 23:41:30 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trunk/perceptron_test.d Sat Apr 05 23:41:30 2008 -0600 @@ -0,0 +1,51 @@ +module perceptron_test; + +import aid.nn.perceptron; +import std.stdio; +import std.string; +import std.conv; +import std.math; + +void main(char[][] args){ + perceptron nn; + double[][] inputs = [[ 0, 0], + [ 0, 1], + [ 1, 0], + [ 1, 1]]; + double[] outputs = [ 0, 0, 0, 1]; + double learningRate = 0.3; + int numReps = 20; + + if(args.length > 1) learningRate = toDouble(args[1]); + if(args.length > 2) numReps = toInt(args[2]); + + nn = new perceptron(2,learningRate,true,null); + + int iter = 0; + double[] weights; + double t,difference; + while(iter <= numReps){ + weights=nn.getWeights(); + writefln("[ %f, %f, %f ]",weights[0],weights[1],weights[2]); + //Evaluate + for(int i = 0; i < 4; i++){ + t = nn.evaluate(inputs[i]); + writefln(" D: %f %f",t,outputs[i]); + difference = abs(t-outputs[i]); + } + writefln("%d: Total Difference: %f",iter,difference); + // End evaluate + + // Train + for(int i = 0; i < 4; i++){ + nn.train(inputs[i],outputs[i]); + } + writefln("%d: Error Value: %f",iter,nn.getErrorValue(inputs,outputs)); + writefln(); + + iter++; + //if(iter > 20) break; + } + weights=nn.getWeights(); + writefln("[ %f, %f, %f ]",weights[0],weights[1],weights[2]); +}