Guest User

Untitled

a guest
Mar 22nd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. import java.io.IOException;
  2.  
  3. public class Perceptron {
  4. Reader rd = new Reader();
  5. double[][] patterns;
  6. double[] answers;
  7. double[] enters;
  8. double[] hidden;
  9. double outer;
  10. double[][] wEH;
  11. double[] wHO;
  12. //double[][] patterns = {{-23,17},{-19,-34},{-42,-3},{-43,34},{-45,-21},
  13. {41,-14},{27,-18},{19,34}};
  14. //int[] answers = {0,1,1,0,1,0,0,0};
  15.  
  16. Perceptron(double[][] patterns, double[] answers ) throws IOException {
  17.  
  18. this.patterns = patterns;
  19. this.answers = answers;
  20. enters = new double[patterns[0].length];
  21. hidden = new double[3];
  22. wEH = new double[enters.length][hidden.length];
  23. wHO = new double[hidden.length];
  24.  
  25. initWeights();
  26. study();
  27.  
  28.  
  29. double[][] input ={ {-43,-45}};
  30. for (int p = 0; p < input.length; p++) {
  31. for (int i = 0; i < enters.length; i++)
  32. enters[i] = input[p][i];
  33.  
  34. countOuter();
  35.  
  36.  
  37. if (outer==1){
  38.  
  39. System.out.println("Точка принадлежит прямой");
  40. }
  41.  
  42. else{
  43. System.out.println("Точка не принадлежит прямой");
  44. }
  45.  
  46. }
  47.  
  48. }
  49.  
  50. public void initWeights() {
  51. for (int i = 0; i < enters.length; i++) {
  52. for (int j = 0; j < wEH.length; j++) {
  53. wEH[i][j] = Math.random() * 0.2 + 0.1;
  54. }
  55. }
  56. for (int i = 0; i < wHO.length; i++)
  57. wHO[i] = Math.random() * 0.2 + 0.1;
  58. }
  59.  
  60. public void countOuter() {
  61. for (int i = 0; i < hidden.length; i++) {
  62. hidden[i] = 0;
  63. for (int j = 0; j < enters.length; j++) {
  64. hidden[i] += enters[j] * wEH[j][i];
  65. }
  66. if (hidden[i] > 0.5) hidden[i] = 1;
  67. else hidden[i] = 0;
  68. }
  69. outer = 0;
  70. for (int i = 0; i < hidden.length; i++) {
  71. outer += hidden[i] * wHO[i];
  72. }
  73. if (outer > 0.5) outer = 1;
  74. else outer = 0;
  75. }
  76.  
  77. public void study() {
  78. double[] err = new double[hidden.length];
  79. double gError = 0;
  80. do {
  81. gError = 0;
  82. for (int p = 0; p < patterns.length; p++) {
  83. for (int i = 0; i < enters.length; i++)
  84. enters[i] = patterns[p][i];
  85.  
  86. countOuter();
  87.  
  88. double lErr = answers[p] - outer;
  89. gError += Math.abs(lErr);
  90.  
  91. for (int i = 0; i < hidden.length; i++)
  92. err[i] = lErr * wHO[i];
  93. for (int i = 0; i < enters.length; i++) {
  94. for (int j = 0; j < hidden.length; j++) {
  95. wEH[i][j] += 0.1 * err[j] * enters[i];
  96.  
  97. }
  98. }
  99. for (int i = 0; i < hidden.length; i++)
  100. wHO[i] += 0.1 * lErr * hidden[i];
  101. }
  102. } while (gError != 0);
  103. }
  104.  
  105. import java.io.IOException;
  106.  
  107. public class Main {
  108.  
  109. public static void main(String[] args) throws IOException {
  110.  
  111. Reader test = new Reader();
  112. test.setInputFile("E:/Lab2_data (3).xls");
  113. // считываем номер колонки из консоли
  114. int ColumnNumber = 0;
  115. //Integer.parseInt(String.valueOf(System.in.read()));
  116. //передаем номер методу read()
  117. test.read(ColumnNumber);
  118.  
  119. double[][]patterns = test.getInput();
  120. double[]answers = test.getOutputs();
  121.  
  122. Perceptron p = new Perceptron(patterns , answers);
  123.  
  124. }
  125. }
Add Comment
Please, Sign In to add comment