Мое обратное распространение производит полный мусор

Я хобби и поэтому не имею большого опыта работы с нейронными сетями, это моя первая попытка реализовать.
Моя функция обратного распространения что-то делает, но не то, что она должна делать.
Сеть не становится лучше в том, на чем я тренируюсь (после примерно 10000 примеров обучения). Реализации из Интернета работают над этой проблемой, поэтому в этом коде должно быть что-то.

void backprop(std::vector<std::vector<neuron>>& neuronen, std::vector<std::vector<std::vector<weight>>>& weights, int rlayer, std::vector<float> target, float learnrate) {
for (int i = 0; i < weights[rlayer].size(); i++) {
for (int j = 0; j < weights[rlayer][i].size(); j++) {
weights[rlayer][i][j].changeweight(weights[rlayer][i][j].weightout() +  (learnrate * (target[i] - neuronen[rlayer][i].actout()) * actfAbl(neuronen[rlayer][i].zout()) * neuronen[rlayer - 1][j].actout()));
}
}

if (rlayer > 1) {
std::vector<float> newtarget;

for (int i = 0; i < neuronen[rlayer - 1].size(); i++) {
float dzdol1 = 0;
for (int j = 0; j < neuronen[rlayer].size(); j++) {
dzdol1 = weights[rlayer][j][i].weightout() * actfAbl(neuronen[rlayer][j].zout() * (2 * neuronen[rlayer][j].actout() - target[j]));
}
std::cout << "dzdol1: " << dzdol1 << std::endl;
newtarget.push_back(dzdol1);
}
backprop(neuronen, weights, rlayer - 1, newtarget, learnrate);
}
return;
}

заранее спасибо

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector