1. C# / Говнокод #5295

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    //1.    Реализовать с помощью персептронов распознавание изображений букв, заданных в виде матриц (4x4, 8x8 или др.). 
    //Набор букв для распознавания определяется фамилией студента (‘Иванов‘ = ‘И‘, ‘В‘, ‘А‘, ‘Н‘, ‘О‘).
    //Выполнить в виде сети из одного слоя. Необходимо выполнить обучение сети на требуемый набор букв. 
    namespace lab1_1
    {
        class Program
    	{
    		 static int[,] wRe = new int[5,25] { 
    			{1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1 },
    			{1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1 }, ...
    		};
    ...
    		///  Дельта обучение 
    		static int delta()
    		{
    			bool p = true;
    			while (p){
    				p = false;
    				int yRes1 = 0, yRes2 = 0, yRes3 = 0, yRes4 = 0, yRes5 = 0;
    				if ((y[0, 0] == 1) && (y[0, 1] == 0) && (y[0, 2] == 0) && (y[0, 3] == 0) && (y[0, 4] == 0)) yRes1 = 1;
    				if ((y[1, 0] == 0) && (y[1, 1] == 1) && (y[1, 2] == 0) && (y[1, 3] == 0) && (y[1, 4] == 0)) yRes2 = 1;
    ....
     
    				for (int i = 0; i < 25; i++) w[i]=wRe[0, i];
    					// суматоры 
    				int s1 = b[0] + w[0] * iBukva[0, 0] + w[1] * iBukva[0, 1] + w[2] * iBukva[0, 2] + w[3] * iBukva[0, 3] + w[4] * iBukva[0, 4] +
    					w[5] * iBukva[1, 0] + w[6] * iBukva[1, 1] + w[7] * iBukva[1, 2] + w[8] * iBukva[1, 3] + w[9] * iBukva[1, 4] +
    ....
    				 t1 = s1 < fi ? 0 : 1;
    				int yResT1 = 0;
    				if ((t1 == 1) && (t2 == 0) && (t3 == 0) && (t4 == 0) && (t5 == 0)) yResT1 = 1;
    				// первая буква
    				if ((yRes1 != yResT1) && (yRes1 == 0))
    				{
    					for (int i = 0; i < 5; i++)
    						for (int j = 0; j < 5; j++)
    							if (iBukva[i, j] == 1) w[5 * i + j]--;
    					b[0]--;
    					p = true;
    				}
    				 if ((yRes1 != yResT1) && (yRes1 == 1))
    				{
    					for (int i = 0; i < 5; i++)
    						for (int j = 0; j < 5; j++)
    							if (iBukva[i, j] == 1) w[5 * i + j]++;
    					b[0]++;
    					p = true;
    				}
    				 for (int i = 0; i < 25; i++) wRe[0, i] = w[i];
     
    				for (int i = 0; i < 25; i++) w[i] = wRe[1, i];
    				int s2 = b[1] + w[0] * vBukva[0, 0] + w[1] * vBukva[0, 1] + w[2] * vBukva[0, 2] + w[3] * vBukva[0, 3] + w[4] * vBukva[0, 4] +
    					w[5] * vBukva[1, 0] + w[6] * vBukva[1, 1] + w[7] * vBukva[1, 2] + w[8] * vBukva[1, 3] + w[9] * vBukva[1, 4] +
    ...
    				 t2 = s2 < fi ? 0 : 1;
    				int yResT2 = 0;
    				if ((t1 == 0) && (t2 == 1) && (t3 == 0) && (t4 == 0) && (t5 == 0)) yResT2 = 1;
    				//вторая буква
    				if ((yRes2 != yResT2) && (yRes2 == 0))
    				{
    					for (int i = 0; i < 5; i++)
    						for (int j = 0; j < 5; j++)
    							if (vBukva[i, j] == 1) w[5 * i + j]--;
    					b[1]--;
    					p = true;
    				}
    				 if ((yRes2 != yResT2) && (yRes2 == 1))
    				{
    					for (int i = 0; i < 5; i++)
    						for (int j = 0; j < 5; j++)
    							if (vBukva[i, j] == 1) w[5 * i + j]++;
    					b[1]++;
    					p = true;
    				}
    				 for (int i = 0; i < 25; i++) wRe[1, i] = w[i];
     
    				for (int i = 0; i < 25; i++) w[i] = wRe[2, i];
    				int s3 = b[2] + w[0] * aBukva[0, 0] + w[1] * aBukva[0, 1] + w[2] * aBukva[0, 2] + w[3] * aBukva[0, 3] + w[4] * aBukva[0, 4] +
    					w[5] * aBukva[1, 0] + w[6] * aBukva[1, 1] + w[7] * aBukva[1, 2] + w[8] * aBukva[1, 3] + w[9] * aBukva[1, 4] +
    					w[10] * aBukva[2, 0] + w[11] * aBukva[2, 1] + w[12] * aBukva[2, 2] + w[13] * aBukva[2, 3] + w[14] * aBukva[2, 4] +
    					w[15] * aBukva[3, 0] + w[16] * aBukva[3, 1] + w[17] * aBukva[3, 2] + w[18] * aBukva[3, 3] + w[19] * aBukva[3, 4] +
    					w[20] * aBukva[4, 0] + w[21] * aBukva[4, 1] + w[22] * aBukva[4, 2] + w[23] * aBukva[4, 3] + w[24] * aBukva[4, 4];
    ...

    Запостил: qbasic, 16 Января 2011

    Комментарии (2) RSS

    • трудно понять алгоритм проги, но выглядит, как решение "в лоб", причем все на одном дыхании, в одной куче.
      впрочем, это уже уныло, бо лаба.
      Ответить
    • Bukva[0, 0] + w[1] * aBukva[0, 1] + w[2] * aBukva[0, 2] + w[3] * aBukva[0, 3] + w[4] * aBukva[0, 4] +
      					w[5] * aBukva[1, 0] + w[6] * aBukva[1, 1] + w[7] * aBukva[1, 2] + w[8] * aBukva[1, 3] + w[9] * aBukva[1, 4] +
      					w[10] * aBukva[2, 0] + w[11] * aBukva[2, 1] + w[12] * aBukva[2, 2] + w[13] * aBukva[2, 3] + w[14] * aBukva[2, 4] +
      					w[15] * aBukva[3, 0] + w[16] * aBukva[3, 1] + w[17] * aBukva[3, 2] + w[18] * aBukva[3, 3] + w[19] * aBukva[3, 4] +
      					w[20] * aBukva[4, 0] + w[21] * aBukva[4, 1] + w[22] * aBukva[4, 2] + w[23] * aBukva[4, 3] + w[24] * aBukva[4, 4];
      Цикл бы не помешал.

      А вообще, стандартная проблема студентов. Не умеют разбивать код на модули/функции.
      Ответить

    Добавить комментарий