Распознавание номера показывает неправильный ответ - PullRequest
0 голосов
/ 28 мая 2020

Мне нужно написать такую ​​сеть с двумя слоями. Веса определяются довольно просто: 1 для синего и -1 для белого. Для первого выходного нейрона вы должны установить 15 весов для числа 1, для второго выходного нейрона вы должны установить еще 15 весов для числа 2 et c, и последний выходной нейрон должен распознать число 0. В конце концов, вы должны выбрать максимум из всех выходных нейронов, и он будет результатом распознавания. и смещение: 6 для 1 0 для 3, 5 1 для 2 2 для 4 3 для 7 -2 для 8 -1 для 6, 9, 0 если я введу 0, то w будет {+1, +1, + 1, +1, -1, +1, +1, -1, +1, +1, -1, +1, +1, +1, +1}

и я написал этот код, но это не работает правильно, может кто-нибудь объяснить причину и дать несколько подсказок

int[] w =  {+1, +1, +1, +1, -1, +1, +1, -1, +1, +1, -1, +1, +1, +1, +1};
        int[] output_num = {0,1, 2, 3, 4, 5, 6, 7,8,9};
        int[] bias = {-1, 6, 1, 0, 2, 0, -1, 3, -2, -1};
        Integer[] temp =new Integer[10];
        int[] output = new int[10];
        for (int i = 0; i < output_num.length; i++) {
            for (int j = 0; j < w.length; j++) {
                temp[i]  = output_num[i] * w[j];
            }
        }
        for (int i = 0; i < temp.length; i++) {
            temp[i] = temp[i] + bias[i];
        }
for (int x:temp) {
            System.out.print(x + " ");
        }

его пример, когда я ввожу 0, он показывает, что этот результат: -1 7 3 3 6 5 5 10 6 8 как мы можем увидеть максимум результат имеет индекс 7, но если я правильно понимаю, что индекс должен быть 0 для максимального элемента, может кто-нибудь дать мне несколько совпадений или объяснить

1 Ответ

0 голосов
/ 28 мая 2020

Здесь вы что-то делаете неправильно, нейронные сети так не работают, обычно мы не должны определять веса, они должны быть адаптированы с использованием ввода и вывода

Вы должны инициализировать их, но они имеют для обновления ( Спуск градиента ), предположим, у вас есть следующий пример:

input | output
x1    | y1
x2    | y2

Тогда вот как вы обновите свои веса:

w[i] = w[i] + n ( d - yi ) xi

где (d - yi) = ошибка и n = скорость обучения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...