How I can add more hidden layers on the nftool code that I exported from the nnstart GUI?

Illustration
Custódio_54 - 2021-07-13T11:19:13+00:00
Question: How I can add more hidden layers on the nftool code that I exported from the nnstart GUI?

Since I don't know much about how to implement a network using command line, I tried using the GUI from NNSTART and exported the code so I could try to figure out how to make the changes I need. the problems is that I don't how to add more layers/neurons, even more ephocs.   Here is the code I got from my first attempt: % Solve an Input-Output Fitting problem with a Neural Network % Script generated by Neural Fitting app % Created 13-Sep-2017 20:47:36 % % This script assumes these variables are defined: % % Input_train - input data. % Target_train - target data. x = Input_train; t = Target_train; % Choose a Training Function % For a list of all training functions type: help nntrain % 'trainlm' is usually fastest. % 'trainbr' takes longer but may be better for challenging problems. % 'trainscg' uses less memory. Suitable in low memory situations. trainFcn = 'trainlm'; % Levenberg-Marquardt backpropagation. % Create a Fitting Network hiddenLayerSize = 23; net = fitnet(hiddenLayerSize,trainFcn); % Choose Input and Output Pre/Post-Processing Functions % For a list of all processing functions type: help nnprocess net.input.processFcns = {'removeconstantrows','mapminmax'}; net.output.processFcns = {'removeconstantrows','mapminmax'}; % Setup Division of Data for Training, Validation, Testing % For a list of all data division functions type: help nndivide net.divideFcn = 'dividerand'; % Divide data randomly net.divideMode = 'sample'; % Divide up every sample net.divideParam.trainRatio = 80/100; net.divideParam.valRatio = 10/100; net.divideParam.testRatio = 10/100; % Choose a Performance Function % For a list of all performance functions type: help nnperformance net.performFcn = 'mse'; % Mean Squared Error % Choose Plot Functions % For a list of all plot functions type: help nnplot net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ... 'plotregression', 'plotfit'}; % Train the Network [net,tr] = train(net,x,t); % Test the Network y = net(x); e = gsubtract(t,y); performance = perform(net,t,y) % Recalculate Training, Validation and Test Performance trainTargets = t .* tr.trainMask{1}; valTargets = t .* tr.valMask{1}; testTargets = t .* tr.testMask{1}; trainPerformance = perform(net,trainTargets,y) valPerformance = perform(net,valTargets,y) testPerformance = perform(net,testTargets,y) % View the Network view(net) % Plots % Uncomment these lines to enable various plots. %figure, plotperform(tr) %figure, plottrainstate(tr) %figure, ploterrhist(e) %figure, plotregression(t,y) %figure, plotfit(net,x,t) end  

Expert Answer

Profile picture of John Michell John Michell answered . 2025-11-20

you can use :
 
 
trainFcn = 'trainlm';
 hiddenLayerSize = 23;
 numberhiddenlayers=2;%more hidden layers 
net = fitnet([hiddenLayerSize numberhiddenlayers],trainFcn);
 net.trainParam.epochs=2000;% more epochs
 view(net)

with your code:

% Solve an Input-Output Fitting problem with a Neural Network
      % Script generated by Neural Fitting app
      % Created 13-Sep-2017 20:47:36
      %
      % This script assumes these variables are defined:
      %
      %   Input_train - input data.
      %   Target_train - target data.
      x = Input_train;
      t = Target_train;
      % Choose a Training Function
      % For a list of all training functions type: help nntrain
      % 'trainlm' is usually fastest.
      % 'trainbr' takes longer but may be better for challenging problems.
      % 'trainscg' uses less memory. Suitable in low memory situations.
      trainFcn = 'trainlm';  % Levenberg-Marquardt backpropagation.
      % Create a Fitting Network
      hiddenLayerSize = 23;
      numberhiddenlayers=2; %more hidden layers
      net = fitnet([hiddenLayerSize numberhiddenlayers],trainFcn);
      net.trainParam.epochs=2000; %more epochs
      % Choose Input and Output Pre/Post-Processing Functions
      % For a list of all processing functions type: help nnprocess
      net.input.processFcns = {'removeconstantrows','mapminmax'};
      net.output.processFcns = {'removeconstantrows','mapminmax'};
      % Setup Division of Data for Training, Validation, Testing
      % For a list of all data division functions type: help nndivide
      net.divideFcn = 'dividerand';  % Divide data randomly
      net.divideMode = 'sample';  % Divide up every sample
      net.divideParam.trainRatio = 80/100;
      net.divideParam.valRatio = 10/100;
      net.divideParam.testRatio = 10/100;
      % Choose a Performance Function
      % For a list of all performance functions type: help nnperformance
      net.performFcn = 'mse';  % Mean Squared Error
      % Choose Plot Functions
      % For a list of all plot functions type: help nnplot
      net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ...
        'plotregression', 'plotfit'};
      % Train the Network
      [net,tr] = train(net,x,t);
      % Test the Network
      y = net(x);
      e = gsubtract(t,y);
      performance = perform(net,t,y)
      % Recalculate Training, Validation and Test Performance
      trainTargets = t .* tr.trainMask{1};
      valTargets = t .* tr.valMask{1};
      testTargets = t .* tr.testMask{1};
      trainPerformance = perform(net,trainTargets,y)
      valPerformance = perform(net,valTargets,y)
      testPerformance = perform(net,testTargets,y)
      % View the Network
      view(net)
      % Plots
      % Uncomment these lines to enable various plots.
      %figure, plotperform(tr)
      %figure, plottrainstate(tr)
      %figure, ploterrhist(e)
      %figure, plotregression(t,y)
      %figure, plotfit(net,x,t)
      end


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!