you can download my source code here
Click on here for Source Code
Here is my training set i ran thru each sample in the set 10 times, so the network generation is 40
|--First Input Neuron---|---Second Input Neuron----|---Correct Output---|
|--------0.0-----------|----------0.0--------------|-------0.0----------|
|--------1.0-----------|----------0.0--------------|-------1.0----------|
|--------0.0-----------|----------1.0--------------|-------1.0----------|
|--------1.0-----------|----------1.0--------------|-------0.0----------|
And here is my code I am using implementing the backpropagation training algorithm and I knew 0 calculus so i bet its prob the training algorithm.
void BackPropagation( CNeuralNetwork *pcNeuralNetwork, double *pdbExample, double dbMomentum, double dbLearningRate ) { int iOutputLayerID = pcNeuralNetwork->ReturnNeuralNetworkLayerCounter() - 1; int i, k, j = pcNeuralNetwork->ReturnNeuralNetworkLayer( iOutputLayerID ).ReturnNeuronCounter(); for ( i = 0; i < pcNeuralNetwork->ReturnNeuralNetworkLayer( iOutputLayerID ).ReturnNeuronCounter(); i++ ) { pcNeuralNetwork->ReturnNeuron( iOutputLayerID, i ).SetDelta( pcNeuralNetwork->ReturnNeuron( iOutputLayerID, i ).ReturnOutput() * ( 1.0 - pcNeuralNetwork->ReturnNeuron( j, i ).ReturnOutput() ) * ( 1 - pcNeuralNetwork->ReturnNeuron( iOutputLayerID, i ).ReturnOutput() ) * ( pcNeuralNetwork->ReturnNeuron( iOutputLayerID, i ).ReturnOutput() - pcNeuralNetwork->ReturnNeuron( iOutputLayerID, i ).ReturnOutput() ) ); for ( j = iOutputLayerID - 1; j > 2; i-- ) { for ( k = 1; k <= iOutputLayerID; k++ ) { pcNeuralNetwork->ReturnNeuron( j, k ).SetDelta( pcNeuralNetwork->ReturnNeuron( j, k ).ReturnOutput() * ( 1 - pcNeuralNetwork->ReturnNeuron( j, k ).ReturnOutput() ) * pcNeuralNetwork->ReturnNeuron( j + 1, i ).ReturnWeight( k ) * pcNeuralNetwork->ReturnNeuron( j + 1, i ).ReturnDelta() ); } } } for ( i = iOutputLayerID; i > 2; i-- ) { for ( j = 1; j < pcNeuralNetwork->ReturnNeuralNetworkLayer( i ).ReturnNeuronCounter(); j++ ) { pcNeuralNetwork->ReturnNeuron( i, j ).SetBias( pcNeuralNetwork->ReturnNeuron( i, j ).ReturnBias() + ( dbLearningRate * 1.0 * pcNeuralNetwork->ReturnNeuron( i, j ).ReturnDelta() ) ); for ( k = 1; k < pcNeuralNetwork->ReturnNeuralNetworkLayer( i - 1 ).ReturnNeuronCounter(); k++ ) { pcNeuralNetwork->ReturnNeuron( i, j ).SetWeight( k, pcNeuralNetwork->ReturnNeuron( i, j ).ReturnWeight( k ) + ( dbLearningRate * pcNeuralNetwork->ReturnNeuron( i - 1, k ).ReturnOutput() * pcNeuralNetwork->ReturnNeuron( i, j ).ReturnDelta() ) ); } } }}
If will respond with any additional info. Thanks for your help.