MATLAB: Neural Network code

annDeep Learning Toolbox

I have written a code in Matlab for neural network training and testing. But, it is not working as expected. I am training the network with input and target and testing it with test input and plotting the response against the actual response. mse is too high. The value of mse that I am getting is 15.4. Is there any mistake in the code? Can you take a look at the code and help me out !!
load a1.txt ( Input )
load a4.txt (Target)
load b1.txt (Test input)
load b4.txt (actual output)
P=[a1(1:2986,1)];
T=[a4(1:2986,1)];
a=[b1(1:2986,1)];
s=[b4(1:2986,1)];
[pn1,PS] = mapminmax(P');
[tn1,TS] = mapminmax(T');
[an1,AS]= mapminmax(a');
[sn1,SS]= mapminmax(s');
netnew1=newfit(pn1,tn1,[]);
[netnew1,tr1]=train (netnew1,pn1,tn1);
y2=sim(netnew1,an1);
y2_again = mapminmax('reverse',y2',TS);
plot(y2_again,'r');
hold;
plot(s);
d=(y2_again-s).^2;
mse1=mean(d);
Thanks & Regards,
Haritha Srinivasan

Best Answer

Your code is basically creating a network with only one layer of neurons. With newfit this means that the network is trying to find the line that best fits the network.
However, your data might have a couple of nonlinearities (it doesn't necessarily have to be linear). Introducing a second layer of neurons will help to capture those situations. To do so, pick a number of neurons for your hidden layer (this depends on the complexity of your data). For example:
n = 25;
netnew1=newfit(pn1,tn1,n);
Now the response of your network should have been improved.