Problem: feed-forward neural network - the connection between the hidden layer and output layer is removed.
Show older comments
Hi everybody.
I am facing a strange problem with Matlab and, in particular, with the training of a feed-forward neural network.
In practice, I set the network, which is formed by an input layer, a hidden layer and an output layer. But, when I call the train function, the connection between the hidden layer and the output layer is removed and I do not understand why. I hope someone can help me.
The following is the simple code I use:
if true
load fisheriris
feedforwardNetwork = feedforwardnet(10);
feedforwardNetwork.divideFcn = 'dividetrain';
feedforwardNetwork.trainFcn = 'traingd';
feedforwardNetwork.trainParam.epochs = 10;
feedforwardNetwork = train(feedforwardNetwork, meas');
end
Gianni.
1 Comment
Brendan Hamm
on 23 Dec 2016
You have no targets defined so there is no training which occurs. What is it you are trying to train?
The following works just fine:
targets = strcmp('setosa',species');
feedforwardNetwork = feedforwardnet(10);
feedforwardNetwork.divideFcn = 'dividetrain';
feedforwardNetwork.trainFcn = 'traingd';
feedforwardNetwork.trainParam.epochs = 10;
feedforwardNetwork = train(feedforwardNetwork, meas',targets );
Accepted Answer
More Answers (1)
Greg Heath
on 24 Dec 2016
Hi everybody.
I am facing a strange problem with Matlab and, in particular, the training of
a feed-forward neural network.
In practice, I set the network, which is formed by an input layer, a hidden
layer and an output layer. But, when I call the train function, the connection between
the hidden layer and the output layer is removed and I do not understand why.
I hope someone can help me.
========================================================================
close all, clear all, clc
load fisheriris
whos
% Name Size Bytes Class
% meas 150x4 4800 double
% species 150x1 19300 cell
% NOTE: FISHERIRIS IS A PATTERN-RECOGNITION/CLASSIFICATION DATA SET. The
appropriate training function to use is PATTERNNET. See the appropriate
help and doc documentation:
help patternnet
% This yields a script which I don't think is particularly helpful.
However, you should probably read it anyway just to see what MATLAB thinks is useful
[x,t] = iris_dataset; % Dimensions of input x and target t?
net = patternnet(10);
% The default of 10 hidden nodes is OK for first getting the feel of the problem. However, in the final result I like to use as few hidden nodes as possible. If successful, I think it is the best way to design a net which does not have an excess number of degrees of freedom that could rein havoc on unseen data via the dreaded phenomenon of "OVERTRAINING AN OVERFIT NET".
net = train(net,x,t); %RNG seed for weight initialization??
view(net)
y = net(x); % Posterior probability estimates
perf = perform(net,t,y);% What performance criterion?
classes = vec2ind(y); % Predicted classes. Class error rates??
doc patternnet % Yields the same sample code.
% Now consider your code:
clear all, close all, clc % LET'S START FRESH
load fisheriris % WHAT IS LOADED? DIMENSIONS?
net = feedforwardnet(10); % DEFAULT
net.divideFcn = 'dividetrain'; % WHY NO VALIDATION AND TEST ??
net.trainFcn = 'traingd'; % PROBABLY OK. BUT WHY?
net.trainParam.epochs = 10; % ??? DEAD IN THE WATER!!!
net = train(net, meas'); % NEED INPUT & TARGET !!
%Your biggest problems are
1. Ignoring the sample code in the help and doc documentation
2. Not beginning by using as many defaults as possible
3. Not realizing that designs are a trial and error process
best begun by using as many defaults as possible.
4. Not searching in the NEWSGROUP and ANSWERS for previous
posts
Hope this helps.
Greg
2 Comments
Categories
Find more on Deep Learning Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!