Advertisement
Guest User

Untitled

a guest
Oct 16th, 2016
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. class MenuState extends FlxState
  2. {
  3.  
  4. private var inputParams:Array<Array<Int>> = [[0, 0], [0, 1], [1, 0], [1, 1]];
  5. private var rightAnswers:Array<Int> = [0, 1, 1, 0];
  6.  
  7. private var echo:Int = 60000;
  8. private var weightSave:Array<Float>;
  9. private var errorMSE:Float = 1;
  10.  
  11. override public function create():Void
  12. {
  13. super.create();
  14.  
  15. //start
  16. var weight:Array<Float> = new Array<Float>();
  17.  
  18. //epoha
  19. for (i in 0...echo){
  20. //iteration
  21. //weight generation
  22. var weight:Array<Float> = new Array<Float>();
  23. for (j in 0...6){
  24. weight[j] = Math.random();
  25. }
  26.  
  27. var errorFinal:Float = 0;
  28.  
  29. for (h in 0...inputParams.length - 1){
  30. var h1Input:Float = inputParams[h][0] * weight[0] + inputParams[h][1] * weight[2];
  31. var h1Output:Float = sigma(h1Input);
  32.  
  33. var h2Input:Float = inputParams[h][0] * weight[1] + inputParams[h][1] * weight[3];
  34. var h2Output:Float = sigma(h2Input);
  35.  
  36. var oInput:Float = h1Output * weight[4] + h1Output * weight[5];
  37. var oOutput:Float = sigma(oInput);
  38.  
  39. errorFinal += Math.pow(rightAnswers[h] - oOutput, 2);
  40. }
  41.  
  42. errorFinal = errorFinal / 4;
  43.  
  44. if (errorFinal < errorMSE){
  45. errorMSE = errorFinal;
  46. weightSave = weight;
  47. }
  48. }
  49.  
  50. //test neuro system
  51. trace("Error min: " + errorMSE);
  52. trace("Weight :" + weightSave);
  53. trace(goTest(0, 0));
  54. trace(goTest(0, 1));
  55. trace(goTest(1, 0));
  56. trace(goTest(1, 1));
  57. }
  58.  
  59. private function goTest(num1:Int, num2:Int):Float {
  60. var h1Input:Float = num1 * weightSave[0] + num2 * weightSave[2];
  61. var h1Ouput:Float = sigma(h1Input);
  62.  
  63. var h2Input:Float = num1 * weightSave[1] + num2 * weightSave[3];
  64. var h2Ouput:Float = sigma(h2Input);
  65.  
  66. var oInput:Float = h1Ouput * weightSave[4] + h2Ouput * weightSave[5];
  67. var oOutput:Float = sigma(oInput);
  68.  
  69. return oOutput;
  70. }
  71.  
  72. private function sigma(innerNum:Float):Float {
  73. return 1 / (1 + Math.exp(-innerNum));
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement