Netlab - Как рассчитываются ошибки?

Я пытаюсь оптимизировать и проверить нейронную сеть, используя Netlab на Matlab

Я хотел бы найти значение ошибки для каждой итерации, чтобы увидеть сходимость на графике. Это можно сделать, сохранив ошибки, представленные в командном окне, установив для параметров (1) значение 1, используя errlog - вывод netopt.

Однако эти ошибки не совпадают с mlperr, который дает значение ошибки 0,5*(ошибка суммы квадратов) для последней итерации. Я не могу по-настоящему использовать их, если не знаю, как они рассчитываются.

Кто-нибудь знает, что представляют ошибки, отображаемые в командном окне (я использую масштабированный сопряженный градиент в качестве алгоритма оптимизации)?

Есть ли способ хранения mlperr для каждой итерации, выполняемой сетью?

Любая помощь с благодарностью, большое спасибо!

NB: я пытался сделать что-то похожее на это: ftp://ftp.dcs.shef.ac.uk/home/spc/com336/neural-lab-wk6.html

Однако это дает разные результаты для работы сети с количеством итераций, указанным в параметрах (14), а не по некоторым причинам.

1 ответ

Решение

Да, конечно,

Вектор ERRLOG, созданный в качестве выхода для функции оптимизации сети, netopt со следующим синтаксисом

[NET, OPTIONS, ERRLOG] = netopt(NET, OPTIONS, X, T, ALG)

Каждая строка ERRLOG дает 0,5*SSE (ошибка суммы квадратов) для соответствующей итерации оптимизации сети. Эта ошибка рассчитывается между прогнозируемыми выходами (y) и целевыми выходами (t).

Функция MLPERR, имеет следующий синтаксис

E = mlperr(NET, X, T)

Он также дает 0,5 * SSE между прогнозируемыми выходами (y) и целевыми выходами (t), но, поскольку сетевые параметры постоянны (NET должен быть предварительно обучен), E является единственным значением.

Если netopt был запущен с выводом ERRLOG, а затем MLPERR был запущен с той же сетью и переменными, значение E должно совпадать со значением последней строки ERRLOG (ошибка после последней итерации оптимизации сети).

Надеюсь, это кому-то пригодится!

Другие вопросы по тегам