December 30, 2010

Forward And Reverse Pass Neural Network


Jawab
Forward Pass
Input to top neuron = (0.7 x 0.1)+(0.7 x 0.5) =0.36
= 1/(1+e^(-0,36) )
= 0.5890
Input to bottom Neuron = (0.7 x 0.2) + (0.1 x 0.3) = 0.169
= 1/(1+e^(-0,169) )
= 0.54239
Final Output = 0.5890 + 0.5890 = 0.698
= 1/(1+e^(-0,698) )
= 0.54290

Reverse Pass
Nilai target = 1
Output Error ð = (t-o)(1-o) = (1-0.54290)(1-0.54290) = 0.1134
New weights for output layers
W1+ = w1 + (ð x input) = 0.2 +(0.1134 x 0.36) = 0.2408
W2+ = w1 + (ð x input) = 0.1 + (0.1134 x 0.169) = 0.11928
Error for hidden layers
ð1 = ð x w1 = (0.1134 x 0.2408) x (1-o)o = 0.0068
ð2 = ð x w1 = (0.1134 x 0.11928) x (1-o)o = 0.00336
New hidden layers
W3+ = 0.1 + (0.0068 x 0.1) = 0.10000068
W4+ = 0.5 + (0.0068 x 0.7) = 0.500004746
W5+ = 0.3 + (0.00336 x 0.1) = 0.300000336
W6+ = 0.2 + (0.00336 x 0.1) = 0.200002350

Source code menghitung Forward & Reverse menggunakan bahasa pemrograman Java
public class ForwardAndReversePass {
//inputA
double inputA=0.1;
//inputB
double inputB=0.7;
//to topneuron
double inputAtoTopNeuron=0.1;
double inputBtoTopNeuron=0.5;
//to bottomneuron
double inputAtoBottomNeuron=0.3;
double inputBtoBottomNeuron=0.2;
//from topNeuron
double fromTopNeuron=0.2;
//from bottomneuron
double fromBottomNeuron=0.1;
public void ForwardReversePass(){
double powN1;
double powN2;
double powFneuron;
double e=Math.exp(1);
//------------------FORWARD PASS------------------------
//logika menghitung topNeuron
double finalTopNeuron=(inputA*inputAtoTopNeuron)+(inputB*inputBtoTopNeuron);
//logika menghitung bottomNeuron
double finalBottomNeuron=(inputB*inputBtoBottomNeuron)+(inputA*inputAtoBottomNeuron);
//logika memangkatkan Exp dg hasil totopNeuron
powN1=Math.pow(e,-finalTopNeuron);
//logika memangkatkan Exp dg hasil tobottomNeuron
powN2=Math.pow(e, -finalBottomNeuron);
//logika menghitung Final neuron
double finalNeuron=(1/(1+powN1)*fromTopNeuron)+(1/(1+powN2)*fromBottomNeuron);
//logika memangkatkan e dg - nilai finalNeuron
powFneuron=Math.pow(e, -finalNeuron);
//logika menghitung final output 1/1+e pangkat -nilai finalNeuron
double finalOutput=1/(1+powFneuron);

//------------------REVERSE PASS------------------------
double SepuluhPangkatMinTiga=Math.pow(10,-3);
//variable Nilai target
double Target=1;
//Logika mencari Output error
double OutputError=(Target-finalOutput)*(1-finalOutput)*finalOutput;
//Logika New Weight for output layer
double w1plus=fromTopNeuron+(OutputError*finalTopNeuron);
double w2plus=fromBottomNeuron+(OutputError*finalBottomNeuron);
//Logika Error for hidden layer
double δ1=OutputError*w1plus*((1*finalOutput)-(finalOutput*finalOutput));
double δ2=OutputError*w2plus*((1*finalOutput)-(finalOutput*finalOutput));
//Logika new hidden layer weight
double w3plus=inputAtoTopNeuron+(δ1*SepuluhPangkatMinTiga*inputA);
double w4plus=inputBtoTopNeuron+(δ1*SepuluhPangkatMinTiga*inputB);
double w5plus=inputAtoBottomNeuron+(δ2*SepuluhPangkatMinTiga*inputA);
double w6plus=inputBtoBottomNeuron+(δ2*SepuluhPangkatMinTiga*inputB);
_______________________________________________
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ForwardAndReversePass fr=new ForwardAndReversePass();
fr.ForwardReversePass();
}

}

Di bawah ini adalah hasil eksekusi program yang telah dibuat


untuk download project-nya klik disini

No comments:

Post a Comment