view trunk/backprop_test.d @ 3:314d68bafeff

Backprop and backprop_test added (no testing).
author revcompgeek
date Fri, 11 Apr 2008 18:12:55 -0600
parents
children 73beed484455
line wrap: on
line source

module backprop_test;

import aid.nn.multilayer.backprop;
import aid.nn.outputFunctions;
import std.stdio;

/+float[][] trainingInputs = [
	[0,0,0],
	[0,0,1],
	[0,1,0],
	[0,1,1],
	[1,0,0],
	[1,0,1],
	[1,1,0],
	[1,1,1]];

float[][] trainingOutputs = [
	[0.1],
	[0.9],
	[0.9],
	[0.1],
	[0.9],
	[0.1],
	[0.1],
	[0.9]];+/

float[][] trainingInputs = [
	[0,0],
	[0,1],
	[1,0],
	[1,1]];

float[][] trainingOutputs = [
	[0.1],
	[0.9],
	[0.9],
	[0.1]];

void main(){
	Backprop nn = new Backprop(2,[4,1],[&sigmoid,&sigmoid]);
	
	float error = 10.0;
	float[] output;
	int iter = 0;
	while(error >= 0.5){
		error = nn.calculateError(trainingInputs,trainingOutputs);
		if(iter % 100 == 0){
			writefln("Iter: %d",iter);
			for(int i=0; i<trainingInputs.length; i++){
				output = nn.evaluate(trainingInputs[i]);
				writef("  %d:", i); printArray(output);
			}
			writefln("  Error: %f", error);
		}
		nn.train(trainingInputs,trainingOutputs);
	}
	writefln("Total Iters: %d",iter);
	for(int i=0; i<trainingInputs.length; i++){
		output = nn.evaluate(trainingInputs[i]);
		writef("  %d:", i); printArray(output);
	}
	writefln("  Error: %f", error);
}

void printArray(float[] array){
	writef("[");
	for(int i=0; i<array.length-1; i++){
		writef("%f, ",array[i]);
	}
	writefln("%f]",array[$]);
}