1 / 1 / 0
Регистрация: 23.10.2014
Сообщений: 20
1

Персептрон. Исправить ошибки

23.10.2014, 13:59. Показов 1646. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет! Помогите исправить ошибку в методе обратного распространения ошибки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
public class Main {
    
    double[] enters;
    double[] hidden;
    double[] outer;
    double[][] wEH;
    double[][] wHO;
    double[][] patterns = {
            {0,0}, {1,0}, {0,1}, {1,1}
    };
    double[] answers = {0,1,1,0};
    
    Main() {
        enters = new double[patterns[0].length];
        hidden = new double[2];
        outer = new double[1];
        wEH = new double[enters.length][hidden.length];
        wHO = new double[hidden.length][outer.length];
        
        initWeights();
        study();
        for (int p = 0; p < patterns.length; p++) {
            for (int i = 0; i < enters.length; i++) 
                enters[i] = patterns[p][i];
            
            countOuter();
            
            System.out.println(outer);
        }
        
    }
    
    public void initWeights() {
        for (int i = 0; i < wEH.length; i++) {
            for (int j = 0; j < wEH[i].length; j++) {
                wEH[i][j] = Math.random()*0.2+0.1;
            }
        }
        
        for (int i = 0; i < wHO.length; i++) {
            for (int j = 0; j < wHO[i].length; j++) {
                wHO[i][j] = 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;
        }
        
        for (int i = 0; i < outer.length; i++) {
            outer[i] = 0;
            for (int j = 0; j < hidden.length; j++) {
                outer[i] += hidden[j] * wHO[j][i];
            }
            if(outer[i]>0.5) outer[i]=1; else outer[i] = 0;
        }
        
    }
    
    public void study() {
        double[] err = new double[hidden.length];
        double gError = 0;
        double lErr = 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();
                
                for (int i = 0; i < outer.length; i++)
                    lErr = answers[p] - outer[i];
                
                gError += Math.abs(lErr);
                
                for(int i = 0; i < hidden.length; i++) {
                    for (int j = 0; j < outer.length; j++) {
                        err[i]=lErr * wHO[i][j];
                    }
                }
                
                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++) {
                    for (int j = 0; j < outer.length; j++) {
                        wHO[i][j] += 0.1 * lErr * hidden[i];
                    }
                }
            }
        } while(gError != 0);
    }
    
    public static void main(String[] args) {
        Main main = new Main();
    }
}
Заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2014, 13:59
Ответы с готовыми решениями:

Нейронные сети "Многослойный персептрон и алгоритм обратного распространения ошибки"
Помогите, пожалуйста! Очень и срочно нужно создать многослойную нейронную сеть и обучить для...

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h...

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt;...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить...

3
4 / 4 / 6
Регистрация: 21.10.2014
Сообщений: 22
24.10.2014, 22:10 2
В какой строке ошибка?
0
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
25.10.2014, 01:14 3
Лучший ответ Сообщение было отмечено StelSmH как решение

Решение

Если я правильно понял, то автору не нравится вывод результата. А ведь все просто: замени 28 строку на:

Java
1
           System.out.println(outer[0]);
1
1 / 1 / 0
Регистрация: 23.10.2014
Сообщений: 20
25.10.2014, 15:04  [ТС] 4
Спасибо, Neon-z, ошибка была в элементарном.
0
25.10.2014, 15:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2014, 15:04
Помогаю со студенческими работами здесь

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private:...

Исправить ошибки
Исправьте пожалуйста ошибки в коде , написал , но не хочет запускаться . Вот задание : а вот...

Исправить ошибки
Добрый день. Помогите исправить ошибки в задачах. Спасибо). program exp2; const m=5; n=3;...

Исправить ошибки
program test5B; type Person = record name : record name : word end; degree : 1..3;...

Исправить ошибки
Вволится строка , вывести слова длина которых меньше 5 { char str, word; ...

Исправить ошибки
друг скинул код но увы немогу скомпилить у него 2015 visual а у тебя 2010 помогите исправить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru