Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- public class Perceptron {
- Reader rd = new Reader();
- double[][] patterns;
- double[] answers;
- double[] enters;
- double[] hidden;
- double outer;
- double[][] wEH;
- double[] wHO;
- //double[][] patterns = {{-23,17},{-19,-34},{-42,-3},{-43,34},{-45,-21},
- {41,-14},{27,-18},{19,34}};
- //int[] answers = {0,1,1,0,1,0,0,0};
- Perceptron(double[][] patterns, double[] answers ) throws IOException {
- this.patterns = patterns;
- this.answers = answers;
- enters = new double[patterns[0].length];
- hidden = new double[3];
- wEH = new double[enters.length][hidden.length];
- wHO = new double[hidden.length];
- initWeights();
- study();
- double[][] input ={ {-43,-45}};
- for (int p = 0; p < input.length; p++) {
- for (int i = 0; i < enters.length; i++)
- enters[i] = input[p][i];
- countOuter();
- if (outer==1){
- System.out.println("Точка принадлежит прямой");
- }
- else{
- System.out.println("Точка не принадлежит прямой");
- }
- }
- }
- public void initWeights() {
- for (int i = 0; i < enters.length; i++) {
- for (int j = 0; j < wEH.length; j++) {
- wEH[i][j] = Math.random() * 0.2 + 0.1;
- }
- }
- for (int i = 0; i < wHO.length; i++)
- wHO[i] = Math.random() * 0.2 + 0.1;
- }
- public void countOuter() {
- for (int i = 0; i < hidden.length; i++) {
- hidden[i] = 0;
- for (int j = 0; j < enters.length; j++) {
- hidden[i] += enters[j] * wEH[j][i];
- }
- if (hidden[i] > 0.5) hidden[i] = 1;
- else hidden[i] = 0;
- }
- outer = 0;
- for (int i = 0; i < hidden.length; i++) {
- outer += hidden[i] * wHO[i];
- }
- if (outer > 0.5) outer = 1;
- else outer = 0;
- }
- public void study() {
- double[] err = new double[hidden.length];
- double gError = 0;
- do {
- gError = 0;
- for (int p = 0; p < patterns.length; p++) {
- for (int i = 0; i < enters.length; i++)
- enters[i] = patterns[p][i];
- countOuter();
- double lErr = answers[p] - outer;
- gError += Math.abs(lErr);
- for (int i = 0; i < hidden.length; i++)
- err[i] = lErr * wHO[i];
- for (int i = 0; i < enters.length; i++) {
- for (int j = 0; j < hidden.length; j++) {
- wEH[i][j] += 0.1 * err[j] * enters[i];
- }
- }
- for (int i = 0; i < hidden.length; i++)
- wHO[i] += 0.1 * lErr * hidden[i];
- }
- } while (gError != 0);
- }
- import java.io.IOException;
- public class Main {
- public static void main(String[] args) throws IOException {
- Reader test = new Reader();
- test.setInputFile("E:/Lab2_data (3).xls");
- // считываем номер колонки из консоли
- int ColumnNumber = 0;
- //Integer.parseInt(String.valueOf(System.in.read()));
- //передаем номер методу read()
- test.read(ColumnNumber);
- double[][]patterns = test.getInput();
- double[]answers = test.getOutputs();
- Perceptron p = new Perceptron(patterns , answers);
- }
- }
Add Comment
Please, Sign In to add comment