К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети»




Скачать 260.4 Kb.
НазваниеК курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети»
страница3/3
Дата публикации21.05.2014
Размер260.4 Kb.
ТипПояснительная записка
literature-edu.ru > Лекции > Пояснительная записка
1   2   3

Приложение

  1. Программа написанная на языке C#. Реализация основных функций программы.

  2. Функция расстояние между цветами:

  3. public static int GetColorDistance(Color c1, Color c2)

  4. {

  5. Func sqr = x => x * x;

  6. return sqr(c1.R - c2.R) + sqr(c1.G - c2.G) + sqr(c1.B - c2.B) + sqr(c1.A - c2.A);

  7. }

  8. Построение графа:

  9. private void MakeGraph()

  10. {

  11. var graphSize = _image.Height * _image.Width;

  12. _graph = Enumerable.Range(0, graphSize).Select(x => new List()).ToArray();



  13. int height = _image.Height;

  14. int width = _image.Width;

  15. Func getVertex = (i, j) => j * width + i;

  16. Func isIn = (a, from, to) => a >= from && a <= to;



  17. var syncObj = new object();



  18. Parallel.For(0, width, i =>

  19. {

  20. for (int j = 0; j < height; j++)

  21. {

  22. var vertex = getVertex(i, j);



  23. {

  24. for (int k = i - _blur; k <= i + _blur; k++)

  25. for (int l = j - _blur; l <= j + _blur; l++)

  26. {

  27. if (k == i && l == j) continue;

  28. if (!isIn(k, 0, width - 1) || !isIn(l, 0, height - 1))

  29. continue;



  30. lock (syncObj)

  31. {

  32. if (

  33. ImageParserHelper.GetColorDistance(_image.GetPixel(i, j),

  34. _image.GetPixel(k, l)) <=

  35. _toleranceLevel)

  36. {

  37. _graph[vertex].Add(getVertex(k, l));

  38. }

  39. }

  40. }

  41. }

  42. }

  43. });

  44. }



  45. Выделение связных компонент:

  46. private void Dfs(int v)

  47. {

  48. if (_set[v] > 0)

  49. return;



  50. var q = new Queue();

  51. q.Enqueue(v);

  52. while (q.Count > 0)

  53. {

  54. var vert = q.Dequeue();

  55. if (_set[vert] > 0) continue;

  56. _set[vert] = _curSet;

  57. _graph[vert].ForEach(q.Enqueue);

  58. }

  59. }



  60. private void MakeComponents()

  61. {

  62. var graphSize = _image.Height * _image.Width;

  63. _curSet = 1;

  64. _set = new int[graphSize];

  65. for (int i = 0; i < graphSize; i++)

  66. {

  67. if (_set[i] > 0) continue;

  68. Dfs(i);

  69. _curSet++;

  70. }



  71. _curSet--;

  72. _components = Enumerable.Range(0, _curSet).Select(x => new GraphComponent{Image = _image}).ToArray();

  73. for(int i = 0; i < graphSize; i++)

  74. {

  75. _components[_set[i]-1].Add(i);

  76. }

  77. }



  78. Удаление фона и шумов:

  79. private void RemoveBackGroundComponents()

  80. {

  81. var biggestComponent = _components.OrderByDescending(x => x.Count).First();

  82. _background = biggestComponent.GetAverageColor();



  83. var newComponents =

  84. _components.Where(

  85. x => ImageParserHelper.GetColorDistance(x.GetAverageColor(), _background) > _toleranceLevel)

  86. .OrderByDescending(x => x.Count).ToList();



  87. if(newComponents.Count == 0) return;



  88. var minCount = newComponents[0].Count;

  89. long allVertexCount = 0;

  90. var allCount = 0;

  91. for (int i = 1; i < newComponents.Count; i++ )

  92. {

  93. if (newComponents[i].Count * allCount * c_Eps < allVertexCount)

  94. break;

  95. allVertexCount += newComponents[i].Count;

  96. allCount++;

  97. minCount = newComponents[i].Count;

  98. }



  99. _components =

  100. newComponents.Where(x => x.Count >= minCount).ToArray();

  101. }



  102. Обучение нейронной сети:

  103. public void Learn(ImageState imageState)

  104. {

  105. if (imageState.Image.GetLength(0) != State.N)

  106. throw new ArgumentException(string.Format("Length of input image must be exactly {0}", State.N));

  107. var num = State.ImageStates.Count;

  108. for(int j = 0; j < State.N; j++)

  109. {

  110. State.W[num, j] = imageState.Image[j];

  111. }

  112. State.ImageStates.Add(imageState);

  113. }



  114. Поиск образа:

  115. public ImageState FindImage(int[] input, int maxIterations = 1000)

  116. {

  117. var yIn = new double[State.M];



  118. for(int i = 0; i < State.M; i++)

  119. {

  120. for(int j = 0; j < State.N; j++)

  121. {

  122. yIn[i] += (double)State.W[i, j]*input[j]/2;

  123. }

  124. }



  125. Func activate = x => x > 0 ? x : 0;



  126. var y = new double[State.M];

  127. var s = new double[State.M];

  128. var yLast = new double[State.M];



  129. Array.Copy(yIn, s, State.M);

  130. ArrayCopyF(s, y, activate);



  131. for (var it = 0; it < maxIterations; it++ )

  132. {



  133. Array.Copy(y, yLast, State.M);



  134. for (var i = 0; i < State.M; i++)

  135. {

  136. var sum = 0.0;

  137. for (var j = 0; j < State.M; j++)

  138. {

  139. if (i == j) continue;

  140. sum += y[j];

  141. }

  142. s[i] = y[i] - State.Eps * sum;

  143. }



  144. ArrayCopyF(s, y, activate);

  145. if (ArrayEquals(y, yLast, Eps))

  146. {

  147. for (int k = 0; k < State.M; k++)

  148. if (y[k] > 0)

  149. return State.ImageStates[k];

  150. }

  151. }



  152. return null;

  153. }


1   2   3

Похожие:

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconКруглов В. И., Дли М. И., Голунов Р. Ю. Нечеткая логика и искусственные нейронные сети
Тарасик В. П. Математическое моделирование технических систем. Минск: «Дизайн про», 2004. – 640 с

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconКруглов В. В., Борисов В. В. Искусственные нейронные сети. Теория и практика. 2-е изд
Попов Э. В. Общение с ЭВМ на естественном языке. / Э. В. Попов. М.: Наука, 1982

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconК курсовому проекту по курсу «Операционные системы и среды» Тема:...
Главная идея такого подхода – в разделении всей задачи на более мелкие подзадачи, которые могут быть вычислены независимо друг от...

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconПрепроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Графическая часть состоит из 4 документов: схема электрическая функциональная (Э2), схема электрическая принципиальная (Э3), диаграмма...

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconПрепроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Графическая часть работы состоит из 4 документов: схема электрическая функциональная (Э2), схема электрическая принципиальная (Э3),...

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconПрепроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Использовано 5 литературных источников. Графическая часть включает в себя 4 документа: схему электрическую функциональную (Э2), схему...

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconПрепроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Использовано 5 литературных источников. Графическая часть включает в себя 4 документа: схему электрическую функциональную (Э2), схему...

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconПрепроцессор пояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Использовано 5 литературных источников. Графическая часть включает в себя 4 документа: схему электрическую функциональную (Э2), схему...

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconПояснительная записка к курсовому проекту на тему микропроцессорная...

К курсовому проекту по курсу «Архитектура компьютера» Тема: «Искусственные нейронные сети» iconПояснительная записка. К курсовому проекту
«Проектирование гравитационной подпорной стенки на естественном и искусственном основаниях и на сваях»

Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции