Obtaining neural network formula

2 Ansichten (letzte 30 Tage)
Gino Massafra
Gino Massafra am 6 Mär. 2017
Bearbeitet: Gino Massafra am 7 Mär. 2017
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

Antworten (2)

Greg Heath
Greg Heath am 7 Mär. 2017
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 am 7 Mär. 2017
Bearbeitet: Gino Massafra am 7 Mär. 2017
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 Kommentare
Gino Massafra
Gino Massafra am 7 Mär. 2017
I red it, but I can't find the solution in network inputs are not a simple row vector
Gino Massafra
Gino Massafra am 7 Mär. 2017
Bearbeitet: Gino Massafra am 7 Mär. 2017
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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Deep Learning Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by