Th3NiKo

Sieci neuronowe - ćwiczenia 3

Mar 18th, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. //Liczymy jak narysowac obrazek biorac pod uwage wagi i wejscie
  7. float *wynik(float wagi[][25], float wejscie[25]){
  8.     float *wyjscie = new float[25];
  9.     for(int i = 0; i < 25; i++){
  10.         wyjscie[i] = 0.0;
  11.         for(int j = 0; j < 25; j++){
  12.             wyjscie[i] += wagi[i][j] * wejscie[j];
  13.         }
  14.     }
  15.     //Przepuszczamy przez funkcje "signum" by otrzymac +1 lub -1
  16.     for(int i = 0; i < 25; i++){
  17.         if(wyjscie[i] >= 0){
  18.             wyjscie[i] = 1.0;
  19.         } else {
  20.             wyjscie[i] = -1.0;
  21.         }
  22.     }
  23.     return wyjscie;
  24. }
  25.  
  26. //Narysuj obrazek
  27. void rysuj(float obrazek[25]){
  28.     int licznik = 0;
  29.     for(int i = 0; i < 5; i++){
  30.         for(int j = 0; j < 5; j++){
  31.             if(obrazek[licznik] == 1.0){
  32.                 cout << "* ";
  33.             } else {
  34.                 cout << "  ";
  35.             }
  36.             licznik++;
  37.         }
  38.         cout << endl;
  39.     }
  40.     cout << endl;
  41. }
  42.  
  43. int main()
  44. {
  45.     float u1[25]; //Piewszy obrazek
  46.     float u2[25]; //Drugi obrazek
  47.     float u3[25]; //Pierwszy z szumem
  48.     float u4[25]; //Drugi z szumem
  49.     fill(u1, u1+25, -1);
  50.     fill(u2, u2+25, -1);
  51.     fill(u3, u3+25, -1);
  52.     fill(u4, u4+25, -1);
  53.  
  54.     //Pierwszy
  55.     u1[6] = 1; u1[7] = 1; u1[8] = 1; u1[11] = 1; u1[13] = 1; u1[16] = 1; u1[17] = 1; u1[18] = 1;
  56.  
  57.     //Drugi
  58.     u2[6] = 1; u2[7] = 1; u2[12] = 1; u2[17] = 1;
  59.  
  60.     //Pierwszy z szumem
  61.     u3[1] = 1; u3[2] = 1; u3[3] = 1; u3[6] = 1; u3[8] = 1; u3[11] = 1; u3[13] = 1; u3[16] = 1; u3[17] = 1; u3[18] = 1;
  62.  
  63.     //Drugi z szumem
  64.     u4[2] = 1; u4[7] = 1; u4[12] = 1; u4[17] = 1; u4[22] = 1;
  65.  
  66.  
  67.     //Liczymy wagi
  68.     float w[25][25];
  69.     for(int i  = 0; i < 25; i++)
  70.     {
  71.         for(int j = 0; j < 25; j++){
  72.             w[i][j] = (1.0/25.0) * (u1[i] * u1[j] + u2[i] * u2[j]);
  73.         }
  74.     }
  75.  
  76.     cout << "Pierwszy obrazek" << endl;
  77.     rysuj(wynik(w, u1));
  78.     cout << "Drugi obrazek" << endl;
  79.     rysuj(wynik(w, u2));
  80.     cout << "Odszumiony pierwszy obrazek" << endl;
  81.     rysuj(wynik(w, u3));
  82.     cout << "Odszumiony drugi obrazek" << endl;
  83.     rysuj(wynik(w, u4));
  84.  
  85.  
  86.  
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment