Перед обучением часто полезно масштабировать вводимые данные и целевые показатели таким образом, чтобы они всегда попадали в определенный диапазон. Функция mapminmax масштабирует входы и цели таким образом, чтобы они попадали в диапазон [-1,1]. Следующий код иллюстрирует использование этой функции.
[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
net = train(net,pn,tn);
Исходные сетевые входы и цели приведены в матрицах p и t. Нормализованные входы и цели pn и tn возвращаемые значения будут падать в интервале [-1,1]. Структуры ps и ts содержат настройки, в данном случае минимальное и максимальное значения исходных входов и целей. После обучения сети ps параметры должны использоваться для преобразования любых будущих входных данных, которые применяются к сети. Они фактически становятся частью сети, как и веса и предубеждения сети.
Если mapminmax используется для масштабирования целей, затем выход сети будет обучен выдавать выходные данные в диапазоне [-1,1]. Чтобы преобразовать эти выходные данные обратно в те же единицы, которые использовались для исходных целей, используйте настройки ts. Следующий код моделирует сеть, обученную предыдущему коду, а затем преобразует вывод сети обратно в исходные единицы.
an = sim(net,pn);
a = mapminmax('reverse',an,ts);
Сетевой выход an соответствует нормализованным целям tn. Ненормализованный сетевой выход a находится в тех же единицах, что и исходные цели t.
Если mapminmax используется для предварительной обработки данных обучающего набора, затем каждый раз, когда обучаемая сеть используется с новыми входами, они должны быть предварительно обработаны с минимумом и максимумами, которые были рассчитаны для обучающего набора, сохраненного в настройках ps. Следующий код применяет новый набор входов к уже обученной сети.
pnewn = mapminmax('apply',pnew,ps);
anewn = sim(net,pnewn);
anew = mapminmax('reverse',anewn,ts);
Для большинства сетей, в том числе feedforwardnet, эти шаги выполняются автоматически, так что вам нужно только использовать sim команда.