Hexadroid

example_simplified

Aug 3rd, 2020
2,364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.92 KB | None | 0 0
  1. #pragma hdrstop
  2. #pragma argsused
  3.  
  4. #ifdef _WIN32
  5. #include <tchar.h>
  6. #else
  7.   typedef char _TCHAR;
  8.   #define _tmain main
  9. #endif
  10.  
  11. #include <algorithm>
  12. #include <stdio.h>
  13. #include <math.h>
  14. #include <iostream>
  15.  
  16. using std::cin;
  17. using std::cout;
  18. using std::endl;
  19.  
  20.     double training_set_inputs[4][3];
  21.     double training_set_outputs[4];
  22.     double SynapticWeight[4], new_situation[3];
  23.     double i,j,l, Output5, DOToutput5;
  24.     double Boutput[5], BsigmoidPart[5], Bsigmoid_DerivativePart[5], BerrorPart[5], BadjustmentPart[5], BadjustSynapticWeight[4];
  25.     int q;
  26.  
  27.  
  28.  int _tmain(int argc, _TCHAR* argv[])
  29. {
  30.  
  31.     training_set_inputs[0][0]=0;training_set_inputs[0][1]=0;training_set_inputs[0][2]=1;
  32.     training_set_inputs[1][0]=1;training_set_inputs[1][1]=1;training_set_inputs[1][2]=1;
  33.     training_set_inputs[2][0]=1;training_set_inputs[2][1]=0;training_set_inputs[2][2]=1;
  34.     training_set_inputs[3][0]=0;training_set_inputs[3][1]=1;training_set_inputs[3][2]=1;
  35.  
  36.     training_set_outputs[0]=0;
  37.     training_set_outputs[1]=1;
  38.     training_set_outputs[2]=1;
  39.     training_set_outputs[3]=0;
  40.  
  41.  
  42.  
  43.     // Should be a random number between -1 and +1 ; fixed values b/c of example.
  44.     SynapticWeight[1]=-0.16595599;
  45.     SynapticWeight[2]=0.44064899;
  46.     SynapticWeight[3]=-0.99977125;
  47.  
  48.  
  49.     for( i = 1; i <= 10000; i++ ){
  50.  
  51.         //4 number of training sets
  52.         for( q = 1; q <= 4; q++) {
  53.  
  54.         Boutput[q] = training_set_inputs[q-1][0]*SynapticWeight[1]+training_set_inputs[q-1][1]*SynapticWeight[2]+training_set_inputs[q-1][2]*SynapticWeight[3];
  55.  
  56.         BsigmoidPart[q] = 1 / (1 + exp(-(Boutput[q])));
  57.  
  58.         Bsigmoid_DerivativePart[q] = BsigmoidPart[q] * (1 - BsigmoidPart[q]);
  59.  
  60.         BerrorPart[q] = (training_set_outputs[q-1] - BsigmoidPart[q]);
  61.  
  62.         BadjustmentPart[q] =  BerrorPart[q] * Bsigmoid_DerivativePart[q];
  63.  
  64.         }
  65.  
  66.         //3 number of synapses
  67.         for( q = 1; q <= 3; q++) {
  68.  
  69.         BadjustSynapticWeight[q] = training_set_inputs[0][q-1]*BadjustmentPart[1]+training_set_inputs[1][q-1]*BadjustmentPart[2]+training_set_inputs[2][q-1]*BadjustmentPart[3]+training_set_inputs[3][q-1]*BadjustmentPart[4];
  70.  
  71.         SynapticWeight[q]=SynapticWeight[q]+BadjustSynapticWeight[q];
  72.  
  73.         }
  74.  
  75.  
  76.        printf("\nTEST %.14f %.14f %.14f ADJUSTMENTS %.14f %.14f %.14f", SynapticWeight[1], SynapticWeight[2], SynapticWeight[3], BadjustSynapticWeight[1], BadjustSynapticWeight[2], BadjustSynapticWeight[3]);
  77.     }
  78.  
  79.     new_situation[0]=1;new_situation[1]=0;new_situation[2]=0;
  80.  
  81.     Output5=new_situation[0]*SynapticWeight[1]+new_situation[1]*SynapticWeight[2]+new_situation[2]*SynapticWeight[3];
  82.  
  83.     DOToutput5 = 1 / (1 + exp(-(Output5)));
  84.  
  85.  
  86.     printf("\n The output is currently %lf \n", DOToutput5);
  87.  
  88.  
  89.  
  90.  
  91.  
  92.     cout << "Press enter to exit..." << endl;
  93.     cin.get();
  94.  
  95.  
  96.  
  97.  
  98.  
  99.     return 0;
  100. }
  101.  
  102. // python and c++
  103. // ref:   medium.com/technology-invention-and-more/how-to-build-a-simple-neural-network-in-9-lines-of-python-code-cc8f23647ca1
  104. // A.I. / Neural Network crude example
Advertisement
Add Comment
Please, Sign In to add comment