Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

index exceeds matrix dimension

조회 수: 1 (최근 30일)
AMAL targhi
AMAL targhi 2016년 6월 9일
마감: MATLAB Answer Bot 2021년 8월 20일
| This is my code i get the error index matrix dimensions in this line: network.meansqrerr {n} = plus( network.meansqrerr {n}, mse( network.error));|
function network = BUILD(inputs, targets, iterations)
% regle pour determiner le noombre des neurones dans la couche caheée
% source: stackoverflow
% Determiner hidden neuroness ( dans la couche caché couche2)
% round pour les virgules
nhidden = round((size(inputs, 1) + size(targets, 1)) * 2 / 3);
% %
% fprintf(' le nombre des couches cachés est: ')
disp(nhidden) ;
a= size(inputs, 1);
b= size(inputs, 1);
disp (a);
disp(b);
% Create a neural network
% on determine le nombre des neurones dans chaque couche
% couche1: le nombre des entrées
% couche 3 (output) le nombre des classe
network = Create(size(inputs, 1), nhidden, size(targets, 1));
% Iteration variables
% SOMME Des erreurs quadratique
n = 1;
% Train network jusk le max des iterations
%zeros_quat(zeros (10,1));
while n <= iterations
network.meansqrerr{n} = [ 0 0 0 0 ];
% Training epoch
% nombre des colonnes : size(inputs, 2)
for i=1:size(inputs, 2)
% Train network with inputs and target value
network = traine(network, inputs(:,i), targets(:,i));
% % Update sum squared error
network.meansqrerr {n} = plus( network.meansqrerr {n}, mse( network.error));
disp(['Iteration: ', num2str(n), ' / ' 'Error: ', num2str(double(network.meansqrerr{n}) )]);
%
%
% % afficher les erreurs dans chaque iteration
% disp(['Iteration: ', num2str(n), ' / ' 'Error: ', num2str(network.meansqrerr(n) )]);
% %
%
% Update iteration number
n = n + 1;
end
% afficher les poids
end

답변 (1개)

Walter Roberson
Walter Roberson 2016년 6월 9일
You initialize
network.meansqrerr{n} = [ 0 0 0 0 ];
but you iterate
while n <= iterations
When your n exceeds 4, then network.meansqrerr{n} does not exist in the statement
network.meansqrerr {n} = plus( network.meansqrerr {n}, mse( network.error));
By the way: it is confusing that you do
a= size(inputs, 1);
b= size(inputs, 1);
If you intend both variables to be the same then why not use
b = a;
??
  댓글 수: 7
Walter Roberson
Walter Roberson 2016년 6월 9일
Which mse routine are you using?
Please post the complete error message, everything in red, including the part where it says which array the problem is with.
AMAL targhi
AMAL targhi 2016년 6월 10일
this is my code
% network.meansqrerr (n) = network.meansqrerr (n)+ quattoral( mse( network.error)) ;
%
% % disp(['Iteration: ', num2str(n), ' / ' 'Error: ', num2str(double(network.meansqrerr{n}) )]);
function network = BUILD(inputs, targets, iterations)
% regle pour determiner le noombre des neurones dans la couche caheée
% source: stackoverflow
% Determiner hidden neuroness ( dans la couche caché couche2)
% round pour les virgules
nhidden = round((size(inputs, 1) + size(targets, 1)) * 2 / 3);
% fprintf(' le nombre des couches cachés est: ')
disp(nhidden)
% Create a neural network
% on determine le nombre des neurones dans chaque couche
% couche1: le nombre des entrées
% couche 3 (output) le nombre des classe
network = Create(size(inputs, 1), nhidden, size(targets, 1));
% Iteration variables
% SOMME Des erreurs quadratique
n = 1;
% network.meansqrerr = [];
% Train network jusk le max des iterations
while n <= iterations
network.meansqrerr{n} = [0 0 0 0];
% % Training epoch
% nombre des colonnes : size(inputs, 2)
for i=1:size(inputs, 2)
% Train network with inputs and target value
network = traine(network, inputs(:,i), targets(:,i));
% Update sum squared error
% network.meansqrerr (n) = network.meansqrerr (n)+ quattoral( mse( network.error)) ;
network.meansqrerr {n} = times(n^-1,(matric_plus(network.meansqrerr{n}, mse( network.error))))
size(network.meansqrerr);
end
% afficher les erreurs dans chaque iteration
% disp(['Iteration: ', num2str(n), ' / ' 'Error: ', num2str(network.meansqrerr(n) / size(inputs, 2))]);
disp(['Iteration: ', num2str(n), ' / ' 'Error: ', num2str(cell(network.meansqrerr(n)) / size(inputs, 2))]);
num2str(double(network.sumsqrerr(n)) / size(inputs, 2))
% num2str(double(network.sumsqrerr(n)) / size(inputs, 2))
% Update iteration number
n = n + 1;
end
% afficher les poids
% for i = 1:3
% disp(['Couche' num2str(i)]);
% for j = 1:1: [1458,59,7] % Counting neurons in each layer
% disp(['Neuron ' num2str(i)]);
% for k = 1:1: nhidden % Counting input to each layer (= # of neurons in the previous layer)
% disp(['w[' num2str(i) '][' num2str(j) '][' num2str(k) ']=' num2str(network.couches{i}(j,k))]);
% end
%
% end
% end
end
mse is a fucntion for mean square error ( my function)
the error is:
Cell contents reference from a non-cell array object.
Error in matric_plus (line 15) s= plus(a{i,j},b{i,j});
Error in BUILD2 (line 41) network.meansqrerr {n} = times(n^-1,(matric_plus(network.meansqrerr{n}, mse( network.error))))

이 질문은 마감되었습니다.

제품

Community Treasure Hunt

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

Start Hunting!

Translated by