How neural network output is calculated ?

9 views (last 30 days)
For example
function Example_3()
net = feedforwardnet(1);
p = [[2;2] [1;-2] [-2;2] [-1;1]]
t = [1 2 1 2]
net.layers{1}.transferFcn = 'logsig';
net.layers{2}.transferFcn = 'logsig';
net = train(net,p,t);
wb = formwb(net,net.b,net.iw,net.lw);
[b,iw,lw] = separatewb(net,wb);
end
If
iw are -1.60579942154570 and 5.53933429980683
lw is -24.9335783159999
biases are -1.16445538542225 for the hidden neuron
and 7.83599936414935 for the output neuron
I was able able to calculate the correct values when using a perception but not with neural networks for some reason
I calculate the output using logsig(logsig((IW1*Input1)+(IW2*Input2)+bias1)*LW1+bias2)
If I input -1 and 1, how is the output calculated as 1.9994?
Shouldn't the output be between 0 and 1 because of the logsig ?
  1 Comment
Greg Heath
Greg Heath on 6 Feb 2018
When you choose examples, it is worthwhile to 1st consider continuous functions like ones in the help and doc documentation AND include plots of the inputs, targets and targets vs inputs.

Sign in to comment.

Accepted Answer

Greg Heath
Greg Heath on 6 Feb 2018
When you calculate the output of a net you have to take into account that values in the calculations are scaled, by default,
Hope this helps
Thank you for formally accepting my answer
Greg
  1 Comment
AlAwadhi
AlAwadhi on 11 Feb 2018
Edited: AlAwadhi on 12 Feb 2018
Edit: ignore this, typing this to you made me notice my error. Thank you so much. Hello Greg,
First of all thank you for answering
I already did that. I can get the correct answers if the output is between -1 and 1. If I change the outputs to be between any other numbers, my results are different than matlabs. For example I get 9.5 and matlab gets 8.3. The range is correct but the answers are different.
I have a neural network with 1 hidden layer and it uses tansig as an activation function. The output layer also uses tansig
This is what I did in my excel sheet
1.First I scaled the inputs with
Scaled input = (tanhMax-tanhMin)*(input-inputMin)/(inputMax-inputMin) + tanhMin
2.Each hidden neuron is equal to the
HiddenNeuron = tanh(sum(inputs*inputWeights))
3.Each output neuron is equal to the
OutputNeuron = tanh(sum(hidden*hiddenWeights))
4.I scaled back the outputs to be in the same range as my target range
Final output = (TargetMax-TargetMin)*(output- tanhMin)/(tanhMax-tanhMin) + TargetMin
I'm not sure what I did wrong, but everything is good only if the target range is supposed to be between -1 and 1.
Thank you

Sign in to comment.

More Answers (1)

Greg Heath
Greg Heath on 12 Feb 2018
If your outputs are constrained to [ 0, 1 ] use SOFTMAX
If your outputs are constrained to [ -1, 1 ] use TANH
Otherwise use LINEAR
Hope this helps.
Thank you or formally accepting my answer
Greg

Community Treasure Hunt

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

Start Hunting!