Feedforward Neural Network with Adapt Training

3 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.

Categories

Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!