amir.nazarizadeh Ответов: 1

Обновление элементов массива


привет
Я пытаюсь обновить элементы массива, но он работает неправильно
например у меня есть этот массив:

static double[,] weigh = { { 0.05, 0.1 }, { 0.2, 0.2 }, { 0.5, 0.5 } };


и я пытаюсь выполнить это на нем:


for (k = 0; k < 2; k++)
                            {
                                if (z_input[k] > 0.0)
                                {
                                    bias[k] = bias[k] + 0.5 * (-1.0 - z_input[k]);
                                    weigh[k, 0] += (0.5 * (-1.0 - z_input[k]) * input1);
                                    weigh[k, 1] += (0.5 * (-1.0 - z_input[k]) * input2);
                                }
                            }



он выполняет на Ж[0,0] и W[0,1] правильно, но дайте мне Вт[1,0] и W[1,1] неправильно!
что с ним не так?
Помоги мне
спасибо

Что я уже пробовал:

static int[,] input = { { 1, 1 }, { 1, -1 }, { -1, 1 } };
        static int[] target = { -1, 1, 1 };
        static double[,] weigh = { { 0.05, 0.1 }, { 0.2, 0.2 } };
        static double[] vector = { 0.5, 0.5 };
        static double[] bias = { 0.3, 0.15, 0.5 };
        static bool epoch = true;
        static int input1 = 0, input2 = 0;
        static int k = 0;
        static double[] z_input = new double[2];
        static int[] z_layer = new int[2];
        static double y_input;
        static int y;


if (target[j] == -1)
                       {

                           for (k = 0; k < 2; k++)
                           {
                               if (z_input[k] > 0.0)
                               {
                                   bias[k] = bias[k] + 0.5 * (-1.0 - z_input[k]);
                                   weigh[k, 0] += (0.5 * (-1.0 - z_input[k]) * input1);
                                   weigh[k, 1] += (0.5 * (-1.0 - z_input[k]) * input2);
                               }
                           }

                       }

LLLLGGGG

Он не обновляет элемент массива или он обновляет их, но значение не то, что вы хотите?

amir.nazarizadeh

он обновляется, но когда начинается вторая итерация цикла (k=1), он обновляет вес неправильно!

1 Ответов

Рейтинг:
1

Patrice T

Мы понятия не имеем, что может пойти не так, потому что вы не дали нам автономный фрагмент кода, мы не можем проверить ваш код или воспроизвести проблему;
Единственный полезный совет-изучить отладчик, чтобы увидеть, что делает код.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладка кода C# в Visual Studio-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.

Цитата:
с помощью отладчика я обнаружил, что веса неверны.

Можете ли вы обновить вопрос с помощью короткого фрагмента кода, который воспроизводит проблему ?
"вес указан неправильно" идентификатор не информативно, подробно.


amir.nazarizadeh

да, я использовал отладчик и нашел его!
проблема в том, что при запуске второй итерации цикла (k=1) он неправильно обновляет вес!

Patrice T

Если проблема решена, вы можете принять решение: оно сообщит всем, что вопрос решен.
В противном случае обновите вопрос своими выводами и объясните, как это неправильно.

amir.nazarizadeh

- Я знаю!
но я использовал отладчик перед отправкой этого вопроса
с помощью отладчика я обнаружил, что веса неверны.
но это еще не решило!