2014-06-12 3 views
0

나는 매트랩 간단한 역 전파 네트워크를 코드에 노력하고 있으며, 나는 다음과 같은 오류가 점점 오전 : 내 코드의 라인 (144)에첨자 지수는 실제 양의 정수이어야하며, 그들은 (matlab에)는

Subscript indices must either be real positive integers 
or logicals. 

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 

1 : net.layerCount와 round()가있는 다른 루프 벡터를 둘러싸고 있어도 오류가 지속됩니다. 왜 이것이 사실일까요?

감사합니다. l == 1 경우

+1

어떤 오류가이 오류를 반환합니까? "144"는 여기에 많은 것을 말하지 않습니다 ... – liori

+0

'dbstop if error'와'which'는 그 행에서 여러분이 빗나간 그림자 변수를 가지고 있지 않은지 확인합니다 -'sum'에 변수를 넣으 려 할 때 여기에 변수가 있습니다. 귀하의 i/l 값이 귀하가 말하는 것 인 경우. 속임수를보십시오. – nkjt

답변

2

, 당신은 불법

net.layerOutput{l-1} 

0

긍정적 아닌 사용하려고합니다.

입력 레이어는 레이어 간 연결이 아닌 입력을 사용해야합니다.

+1

고마워. 이것이 붙여 넣기 코드를 복사하지 않는 이유입니다. –

+2

@DavidMyers : 장래에는 "분할 및 정복"을 사용하십시오. 실패한 줄이나 표현이 무엇이든 관계없이 어느 것이 문제인지 알아낼 때까지 대화식 명령 창에 작은 줄을 넣으십시오. –