Eu estou tentando codificar uma rede de backpropagation simples no Matlab, e estou recebendo o seguinte erro:
Subscript indices must either be real positive integers
or logicals.
na linha 144 do meu código, que é durante esta seção:
for l = 1:net.layerCount,
if l == 1, % From input layer
for i = round(1:net.inputSize),
i % i = 1 and
l % l = 1 when I get the error.
% error in this next line:
net.weight{l}(i,:) = net.weight{l}(i,:) ...
- sum(lrate .* net.delta{l} .* net.layerOutput{l-1}(i)) ...
- (momentum .* net.previousWeightDelta{l}(i,:));
net.previousWeightDelta{l}(i,:) = net.weight{l}(i,:);
end
else
for i = 1:net.layerSize{l-1},
net.weight{l}(i,:) = net.weight{l}(i,:) ...
- sum(lrate .* net.delta{l} .* net.layerOutput{l-1}(i)) ...
- (momentum .* net.previousWeightDelta{l}(i,:));
net.previousWeightDelta{l}(i,:) = net.weight{l}(i,:);
end
end
end
O erro persiste mesmo se eu cercar 1: net.layerCount e os outros vetores de loop com round (). Alguma idéia de por que esse é o caso?
Obrigado!
Respostas:
2 para resposta № 1No l == 1
caso, você tenta usar ilegalmente
net.layerOutput{l-1}
0
não é positivo.
A camada de entrada precisa usar as entradas, não as conexões entre camadas.