Дружище @Ratyk_ss
Какая у тебя стоит главная задача? Я вижу разные направления.
Если ты хочешь просто изучить алгоритм обратного распространения ошибки (ОРО)
то тебе нужно взять просто Python и желательно готовую реализацию и просто разобраться
как она работает. И сделать график схождения этой ошибки. График и матрица классификации
будет подтверждением того что код написан правильно.
Ты затащил к себе в код библиотеку numpy и keras. Достаточно сложные. И для себя нужно
проверить что каждое действие например с numpy правильно тобой понято и применено и
выдает правильный результат. Я-бы покрыл модульным тестом все взаимодействия. Вот что такое np.dot?
Произведение. Какое? Скалярное? Векторное? ДА их до чорта много. Проверяй что за произведение.
Твоя ошибка - сложная. Нечеткая. Это не то что NPE, или index out of range. Ты говоришь - один нейрон активен.
Почему он один? Почему другие не корректируют свои веса? Вот этот случай ты должен проверить
и доказать в обратную сторону. Чтоб была коррекция цикл должен их покрывать. Они должны РЕАГИРОВАТЬ
на прямой ход и обратный код.
Логгируй. Вставляй asserts. Ничего другого я пока советовать не могу. Сомнительно что code-review здесь поможет.
Если у тебя стоит другая задача. А именно - просто применение нейросетей - то тебе ничего програмиировать вообще не надо. В наше время все НС - решены в виде коробочных продуктов.
И их надо сконфигурировать и просто подать на вход данные.