Obtaining neural network formula

조회 수: 6 (최근 30일)
Gino Massafra
Gino Massafra 2017년 3월 6일
편집: Gino Massafra 2017년 3월 7일
Hi, I'm trying to obtain the formula from neural network using a linear simple case:
F = [-9 1 2 3 4 5 6 7 8 9 10 30 60];%neural network input
T = F*3+1; %target
net = newff(F, T,[],{},'traingdx');
net1 = train(net,F,T,[],[]);
x = 5; %new input
y = sim(net1,x); %ann output ~= 16;
%now i'm trying to obtain the formula from NN:
IW = net1.IW{1};
b = net1.b{1};
y2 = b+IW*x;
%But y2 = 5 whereas y = 3*x+1 = 16!!!
I understand that mapminmax function is involved for normalization..
Do you know how to renormilize "y2" in order to obtain the "y" target ?
Any help will be really appriciated

답변 (2개)

Greg Heath
Greg Heath 2017년 3월 7일
What are b, IW and LW?
Given those values and the fact that x and t are both scaled to [-1 1 ] before training and y is rescaled with the t inverse transformation after training , should lead you to the answer.
Thank you for formally accepting my answer
Greg

Gino Massafra
Gino Massafra 2017년 3월 7일
편집: Gino Massafra 2017년 3월 7일
Dear Greg, I've found the answer to my question for this simple case:
F = [-9 1 2 3 4 5 6 7 8 9 10 30 60];%neural network input
T = F*3+1; %target
net = newff(F, T,[],{},'traingdx');
net.trainParam.epochs = 1000;
net.trainParam.goal = 2e-32;
net.trainParam.min_grad = 1e-16;
net.trainParam.max_fail = 15000;
net.performFcn='mae';
net.trainParam.showWindow=1;
net1 = train(net,F,T,[],[]);
x = 5; %new input
y = sim(net1,x); %ann output = 16; this is the goal I want to reach
%now i'm trying to obtain the formula from NN:
IW = net1.IW{1};
b = net1.b{1};
y2 = b+IW*x;
Tmin = cell2mat(net1.outputs.range(1));
Tmax = cell2mat(net1.outputs.range(2));
Fmin = cell2mat(net1.inputs.range(1));
Fmax = cell2mat(net1.inputs.range(2));
%y3 = (max(T)-min(T))*(y2-min(F))/(max(F)-min(F)) + min(T);
y3 = (Tmax-Tmin)*(y2-Fmin)/(Fmax-Fmin) + Tmin;
y3 is = 16 !!! That's it y = y3
Next step is how to find y3 if the input is not a single row vector:
F = [-9 1 2 3 4 5 6 7 8 9 10 30 60; 21 10 22 3 4 -10 7 8 9 33 22 0 -13];%neural network input
T = sum(F)*5+4; %target
net = newff(F, T,[],{},'traingdx');
net.trainParam.epochs = 1000;
net.trainParam.goal = 2e-32;
net.trainParam.min_grad = 1e-16;
net.trainParam.max_fail = 15000;
net.performFcn='mae';
net.trainParam.showWindow=1;
net1 = train(net,F,T,[],[]);
x = [5; 6]; %new input
y = sim(net1,x); % y = 59;
%now i'm trying to obtain the formula from NN:
IW = net1.IW{1};
b = net1.b{1};
y2 = b+IW*x;
Tmin = cell2mat(net1.outputs.range(1));
Tmax = cell2mat(net1.outputs.range(2));
Fmin = cell2mat(net1.inputs.range(1));
Fmax = cell2mat(net1.inputs.range(2));
y3 = (Tmax-Tmin)*(y2-Fmin)/(Fmax-Fmin) + Tmin;
But now y3 is different from y
This doesn't work because Fmin and Fmax are wrong:
A = net1.inputs.range;
>> A{1,1}
ans =
-9 60
-13 33
Which is now Fmin and Fmax?
Please help me
  댓글 수: 3
Gino Massafra
Gino Massafra 2017년 3월 7일
I red it, but I can't find the solution in network inputs are not a simple row vector
Gino Massafra
Gino Massafra 2017년 3월 7일
편집: Gino Massafra 2017년 3월 7일
Ok I SOLVED it: F = [-9 1 2 3 4 5 6 7 8 9 10 30 60; 21 10 22 3 4 -10 7 8 9 33 22 0 -13];%neural network input
T = sum(F)*5+4; %target
net = newff(F, T,[],{},'traingdx');
net.trainParam.epochs = 1000;
net.trainParam.goal = 2e-32;
net.trainParam.min_grad = 1e-16;
net.trainParam.max_fail = 15000;
net.performFcn='mae';
net.trainParam.showWindow=1;
net1 = train(net,F,T,[],[]);
x = [5; 6]; %new input
y = sim(net1,x); %ann output = 16;
%now i'm trying to obtain the formula from NN:
IW = net1.IW{1};
b = net1.b{1};
x2 = -1+2*(x-[min(F')]')./([max(F')]'-[min(F')]') %I normalize inputs in [-1 +1] range
y2 = b+IW*x2;
y3 = (y2+1)*(max(T)-min(T))/2+min(T);
Now y3 = y
Cheers

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Deep Learning Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by