Feedforward Neural Network with Adapt Training

4 views (last 30 days)
I have 1*600 cell array for input and target. Each cell array consists of 960*1 samples. So there are 600 elements with 960*1 samples. I have divided columnwise for training.
But now i am facing Memory Issue(array exceeds maximum array size) for Jacobian calculations. I have a situation where i have to train the network for 960*1 (input) to 960*1 (target) only.
i tried to do using for loop[feed 960*1 at a time] -> configure multiple net ->adapt() incremental training-> cal MSE .
i'm facing following error
--Error using + Matrix dimensions must agree.
Error in nn7.grad2 (line 95) gA{i} = gA{i} + LWderivP' * gLWZ{k,i};
This is the error from matlab predefined function. Can you help me in solving this please?

Accepted Answer

Sarah Mohamed
Sarah Mohamed on 4 Jan 2018
Take a look at the following post for a similar issue that appears to have been caused by the network configuration:
If this doesn't resolve the issue, it would be helpful if you could post the code that generates the error.
  1 Comment
Pkm
Pkm on 5 Jan 2018
Dear Sarah,
That was not helpful as my weights are initialized in feedforwardnet.m.
Please find the code
if true
%Time series problem input x(1) -(trained only to) target t(1), no delays
clear variables
a = load('input.mat');
b = load('output.mat');
x=a.zz;
t=b.z;
x=cell2mat(x); %960*600 double
x=con2seq(x);
t=cell2mat(t);
t=con2seq(t); % i want it sequentially, 1*600 cell array ,960*1 samples
hiddenLayerSize = 335;
trainFcn = 'trainlm';
net= feedforwardnet(hiddenLayerSize,trainFcn);
for i = 1:600
X=x{i}; %%960*1
T=t{i}; %%960*1
[net,Y,E] = adapt(net, X, T); %Return ,network outputs and errors
y = net(X);
%predict = sim(net,X);%%Giving output as y
% Performance
%performance = perform(net, T, E);
%e = gsubtract(T,y);
%MSE code
%plots
%monitor performance and time steps
end

Sign in to comment.

More Answers (1)

Greg Heath
Greg Heath on 5 Jan 2018
Think in terms of column vectors: Each of N I-dimensional "I"nput vectors causes 1 of the N O-dimensional "O"utput vectors. The corresponding data sizes are
[ I N ] = size(Input)
[ O N ] = size(Target) % = size(Output)
Hope this helps.
Thank you for formally accepting my answer
Greg
  1 Comment
Pkm
Pkm on 8 Jan 2018
Edited: Pkm on 8 Jan 2018
@Greg Yes, in 1*600 cell array with each cell 960*1 matrix for both input and target
Inputs(Each of 600 cell array of 1- dim 960*1 vectors) causes
Targets(Each of 600 cell array of 1 dim 960*1 vectors)
What's wrong ? Although removing feedforward and putting linear layer solved. But i want to use feedforward:(

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!