Я попытался вручную имитировать нейронную сеть, обученную набором инструментов Matlab с 10 слоями. В соответствии с этим info, я должен масштабировать вход до диапазона [-1,1] (выход нормализуется до [0,1], а также должен быть уменьшен с [-1,1]). Я сравниваю с симовой функцией Matlab, и есть огромное искажение выхода, как показано в этом , где верхний график - это ручное моделирование, а нижняя - функция sim-матрицы Matlab. Вот мой простой код.Вручную имитировать нейронную сеть Matlab
clear all;
% x = [0;0;0;0;0;0;0;1;0;0.111;0];
load etp_input;
% t = [0.45];
load etp_target;
load ETp01.mat;
iw = ETp01.IW{1,1};
lw1 = ETp01.LW{2,1};
lw2 = ETp01.LW{3,2};
lw3 = ETp01.LW{4,3};
lw4 = ETp01.LW{5,4};
lw5 = ETp01.LW{6,5};
lw6 = ETp01.LW{7,6};
lw7 = ETp01.LW{8,7};
lw8 = ETp01.LW{9,8};
lw9 = ETp01.LW{10,9};
b1 = ETp01.b{1};
b2 = ETp01.b{2};
b3 = ETp01.b{3};
b4 = ETp01.b{4};
b5 = ETp01.b{5};
b6 = ETp01.b{6};
b7 = ETp01.b{7};
b8 = ETp01.b{8};
b9 = ETp01.b{9};
b10 = ETp01.b{10};
for i=1:365
x = etp_input(:,i+19*365)*2-1;
xs = etp_input(:,i+19*365);
y1 = tansig(iw*x + b1);
y2 = tansig(lw1*y1 + b2);
y3 = tansig(lw2*y2 + b3);
y4 = tansig(lw3*y3 + b4);
y5 = tansig(lw4*y4 + b5);
y6 = tansig(lw5*y5 + b6);
y7 = tansig(lw6*y6 + b7);
y8 = tansig(lw7*y7 + b8);
y9 = tansig(lw8*y8 + b9);
y10 = purelin(lw9*y9 + b10);
outManual(i) = (y10+1)/2;
outSim(i) = sim(ETp01,xs);
end
subplot(2,1,1);
plot(outManual);
subplot(2,1,2);
plot(outSim);
У меня есть годовой набор данных, поэтому я делаю 365 для цикла. Итак, что мне здесь не хватает? У меня есть тонны годовых данных, и они просто случайным образом дали разные искажения вывода (код выше с использованием 19-го набора данных). Любая помощь будет оценена по достоинству. Это часть кода, поэтому мне нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо вам всем. : D: D: D
Отредактировано:
- Я использую nntool создать сеть и сохранить объект сети в мат файла. Полный код обновляется выше.
- Вот network view от Matlab.
Можете ли вы показать, как вы создаете свой NN в MATLAB? Пожалуйста, попробуйте опубликовать [mcve]. Кроме того, разница не так уж плоха. –
Я обновил код и добавлю изображение сети в сообщение. Благодарю. –
'a1, a2, a3, a4 ...' не очень хорошая идея. Я предлагаю вам использовать 3D-матрицы или массивы ячеек ... –