Нейронная сеть Matlab градиентного спуска и среднеквадратичная ошибка - PullRequest
0 голосов
/ 12 мая 2011

Я хочу знать, как работает алгоритм градиентного спуска при обучении в сети matlab и как рассчитывается MSE - у меня есть собственное приложение, но оно не работает как matlab nn, и я хочу знать, почему. Мой алгоритм выглядит так:

    foreach epoch
       gradient_vector = 0 // this is a vector
       rmse = 0

       foreach sample in data set
          output = CalculateForward(sample.input)
          error  = sample.target - output
          rmse += DotProduct(error,error)
          gradient_part = CalculateBackward(error)
          gradient_vector += (gradient_part / number_of_samples)
       end

       network.AddToWeights( gradient_vector * learning_rate)
       rmse = sqrt(rmse/number_of_samples)

    end

Я это что-то похожее, что делает matlab?

1 Ответ

0 голосов
/ 17 августа 2011

Похоже, что делает MATLAB, но имейте в виду, что набор инструментов предназначен для широкого спектра приложений.Ваш алгоритм передает каждую запись данных один раз в сеть один раз за эпоху.Набор инструментов Matlab может представлять данные несколько раз за эпоху, обновляться несколько раз за эпоху и может обновляться различными способами.Уверяю вас, ваш точный метод может быть продублирован с существующим набором инструментов Matlab, но с очень специфическими настройками, которые можно найти, покопавшись в файлах справки для используемой вами нейронной сети.Некоторые из них могут быть ближе к тому, что вы делаете, чем другие, поэтому будьте внимательны.Удачи!

...