2011-03-13 3 views
0

내 프로젝트는 고대 동전을 인식하는 것입니다. 나는 Matlab을 사용하고있다. 이미 입력과 출력을 모두 포함하는 기능 파일이 있습니다. newff와 net을 사용하여 3 가지 종류의 동전을 훈련 시켰습니다. 세 종류의 동전에 대해서는 01, 10, 11을 목표로 사용했습니다. 이제는 훈련 된 그물을 테스트에 사용하고 싶습니다. 나는 시험 이미지도 가지고있다. 나는 다음과 같은 코드 : IMatlab - 테스트를 위해 훈련 된 네트워크 사용

load net.mat; 
load features.mat; 
testInputs = Features'; 
out = sim(net,testInputs); 
[dummy, I]=max(out); 

가치가 동전의 종류를 확인하기 위해 사용하고 있습니다. I이 1이면 1을 입력하고 2라면 2를 입력하고 3을 입력하면 3을 입력하십시오. 제가 맞습니까? I는 않지만 01, 10, 11

if (I == 2) 
    fprintf('Type1\n'); 
elseif (I == 1) 
    fprintf('Type2\n'); 
elseif (I == 3) 
    fprintf('Type3\n'); 
else 
    fprintf('undefined\n'); 
end 

로 타겟을 주었기 때문에 I 하드 이들 1,2,3 값을 부호화 지금 입력 3 개 테스트 동전 이미지 유형, 그것 중 표시 값 I 1 또는 2. 그러나 아닙니다. 3. 훈련에 사용되는 동일한 이미지 세트를 사용할 때도 I 값으로 1 또는 2를 제공합니다.

도와주세요.

+0

가중치 행렬 (액세스 방법을 잊어 버렸습니다.)을보고 넷이 제 3의 가중치로 0으로 로컬 최소값으로 정해지지 않았는지 확인하십시오. – jonsca

+0

저는 matlab를 처음 사용합니다. upls 좀 더 나를 설명 할 수 있습니까? 나는 위에서 말한 것을 이해할 수 없었다. 내 데이터 집합을 훈련 할 때 3 가지 유형의 동전에 대해 [0,1], [1,0] 및 [1,1]을 대상으로 지정했습니다. 그렇게 줄 수는 없니? 교육을 마친 후 훈련 된 데이터를 내가 사용한 테스트 이미지와 비교하면 out = sim (net, testInputs); [dummy, I] = max (out); 그리고 나서 if (I == 2) fprintf ('Type1 \ n'); elseif (I == 1) fprintf ('Type2 \ n'); elseif (I == 3) fprintf ('Type3 \ n'); else fprintf ('undefined \ n'); 종료. 이것은 틀린가? 나는 항상 1 또는 2를 반환합니다. –

+0

가중치 행렬에는 개별 단위 간의 연결의 "강점"이 포함됩니다. 익숙하지 않은 사용자는 Matlab 설명서를 읽어야합니다. 그런 다음 세 번째 단위의 입력이 결과에 어느 정도 영향을 미치는지 확인할 수 있습니다. – jonsca

답변

0

max()의 두 번째 인수는 더 높은 출력을 갖는 뉴런 인덱스를 제공합니다. 타겟이 [0,1], [1,0] 및 [1,1] 인 경우 두 개의 뉴런 만있는 경우 (모든 타겟에 두 개의 요소 만 표시) 3을 얻는 방법은 없습니다. 그 중에서 max(). [0,0,1], [0,1,0] 및 [1,0,0]을 시도해야합니다.

뉴런의 활성화 기능으로 tansig를 사용하는 경우 대상에서 0 대신 -1을 사용하는 것이 좋으므로 비선형 성을 효과적으로 활용할 수 있습니다. [-1, -1,1], [-1,1, -1], [1, -1, -1]과 같은 것입니다.

+0

나 한테 큰 감사. 지금은 작동 중입니다 :)) .. –

관련 문제