annotate trunk/backprop_test.d @ 4:73beed484455

Backprop working correctly.
author revcompgeek
date Sat, 12 Apr 2008 21:55:37 -0600
parents 314d68bafeff
children 810d58835f86
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
1 module backprop_test;
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
2
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
3 import aid.nn.multilayer.backprop;
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
4 import aid.nn.outputFunctions;
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
5 import std.stdio;
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
6 import std.random;
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
7
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
8 /+double[][] trainingInputs = [
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
9 [0,0,0],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
10 [0,0,1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
11 [0,1,0],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
12 [0,1,1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
13 [1,0,0],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
14 [1,0,1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
15 [1,1,0],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
16 [1,1,1]];
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
17
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
18 double[][] trainingOutputs = [
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
19 [0.1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
20 [0.9],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
21 [0.9],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
22 [0.1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
23 [0.9],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
24 [0.1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
25 [0.1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
26 [0.9]];+/
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
27
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
28 /+double[][] trainingInputs = [
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
29 [0,0],
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
30 [1,0],
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
31 [0,1],
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
32 [1,1]];
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
33
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
34 double[][] trainingOutputs = [
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
35 [0.9],
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
36 [0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
37 [0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
38 [0.9]];+/
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
39
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
40 double[][] trainingInputs = [
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
41 [0.9,0.1,0.1,0.1,0.1,0.1,0.1,0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
42 [0.1,0.9,0.1,0.1,0.1,0.1,0.1,0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
43 [0.1,0.1,0.9,0.1,0.1,0.1,0.1,0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
44 [0.1,0.1,0.1,0.9,0.1,0.1,0.1,0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
45 [0.1,0.1,0.1,0.1,0.9,0.1,0.1,0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
46 [0.1,0.1,0.1,0.1,0.1,0.9,0.1,0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
47 [0.1,0.1,0.1,0.1,0.1,0.1,0.9,0.1],
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
48 [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.9]];
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
49
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
50 void main(){
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
51 //rand_seed(0,0);
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
52 Backprop nn = new Backprop(8,[3,8],[&sigmoid,&sigmoid],.1);
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
53
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
54 double error = nn.calculateError(trainingInputs,trainingInputs);
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
55 double[] output;
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
56 int iter = 0;
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
57 writef("weights="); printArray(nn.getWeights());
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
58 writef("outputs="); printArray(nn.evaluateFull(trainingInputs[$-1]));
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
59 while(error >= 0.01 && iter < 50000){
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
60 if(iter % 500 == 0){
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
61 writefln("Iter: %d",iter);
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
62 for(int i=0; i<trainingInputs.length; i++){
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
63 output = nn.evaluate(trainingInputs[i]);
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
64 writef(" %d:", i); printArray(output);
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
65 }
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
66 writefln(" Error: %f", error);
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
67 }
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
68 nn.train(trainingInputs,trainingInputs);
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
69 error = nn.calculateError(trainingInputs,trainingInputs);
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
70 iter++;
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
71 }
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
72 writefln("Total Iters: %d",iter);
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
73 for(int i=0; i<trainingInputs.length; i++){
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
74 writef(" %d:", i); printArray(nn.evaluateFull(trainingInputs[i])[0]);
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
75 }
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
76 writefln(" Error: %f", error);
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
77 writef("weights="); printArray(nn.getWeights());
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
78 }
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
79
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
80 void printArray(double[] array){
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
81 writef("[");
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
82 for(int i=0; i<array.length-1; i++){
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
83 writef("%f, ",array[i]);
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
84 }
4
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
85 writefln("%f]",array[$-1]);
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
86 }
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
87
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
88 void printArray(double[][] array){
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
89 writef("[");
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
90 for(int i=0; i<array.length; i++){
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
91 printArray(array[i]);
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
92 }
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
93 writefln("]");
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
94 }
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
95
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
96 void printArray(double[][][] array){
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
97 writef("[");
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
98 for(int i=0; i<array.length; i++){
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
99 printArray(array[i]);
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
100 }
73beed484455 Backprop working correctly.
revcompgeek
parents: 3
diff changeset
101 writefln("]");
3
314d68bafeff Backprop and backprop_test added (no testing).
revcompgeek
parents:
diff changeset
102 }