2011-08-18 4 views
0

내 데이터 세트에는 29 개의 입력과 6 개의 출력이 포함되어 있습니다. 나는 배울 수 있습니다 내 피드 포워드 MLP 네트워크를 구축하고인수를 사용할 때 newff()가 제대로 작동하지 않는 이유!

net.trainParam.epochs=50; 
net=train(net,Pl,Tl); 

네트워크하여 훈련을

net = newff(minmax(Pl),[14 12 8 6]); 

을 사용하면 내 데이터 설정하고 내가 사용하는 경우 그 오류가 0.7 이하로 감소하지 않지만, newff 함수의 인수는 다음과 같습니다.

net=newff(minmax(Pl),[14 12 8 6],{'tansig' 'tansig' 'tansig' 'purelin'},'trainlm'); 

오류가 매우 빠르게 줄어들어 0.0001 미만입니다! 특이한 노트입니다 제가이 개 신경 세포를 포함하는 하나 개의 층을 사용하여 이전 코드를 사용할 때 오류가 다시 0.2 이하로 감소하고 의심이다

net=newff(minmax(Pl),[2 6],{'tansig' 'purelin'},'trainlm'); 

을! 나에게 몇 가지 팁을 제공하고 나 사이의 차이 무엇을 알고 도와주세요 :

net = newff(minmax(Pl),[14 12 8 6]); 

net=newff(minmax(Pl),[14 12 8 myANN.m],{'tansig' 'tansig' 'tansig' 'purelin'},'trainlm'); 

은?

+0

어떤 MATLAB 버전을 사용하고 있습니까? 또한 너무 많은 숨겨진 레이어를 사용하지 마십시오. 너는 어쩌면 2 개가 필요할거야. 많은 레이어에 걸쳐 Backprop이 제대로 작동하지 않습니다. – kwatford

+0

또한 입력/목표 데이터의 크기는 무엇입니까? – Amro

답변

0

두 번째 인수는 NEWFF(링크에 로그인 필요)은 대상 벡터가 아닌 숨겨진 레이어 (세 번째 인수)의 크기가 아닌 것으로 가정합니다.

숨겨진 레이어의 기본 전달 함수는 tansig이고 출력 레이어는 purelin이며 기본 학습 알고리즘은 trainlm입니다.

마지막으로 재현 가능한 결과를 얻으려면 각 실행이 시작될 때 수동으로 난수 생성기를 고정 된 상태로 재설정해야한다는 점을 기억하십시오.

+0

이전 버전의'newff'는 그가 사용하고있는 호출 규칙을 사용했기 때문에 이전 버전의 MATLAB을 사용했을 수도 있습니다. 일부 버전에서는 기본 트레이너가'trainlm '이 아닌'traingdx'였기 때문에 약간의 영향을 미칠 수 있습니다. – kwatford

+0

@kwatord : 지적 해 주셔서 고맙습니다. (정확히 어떤 버전인지 알고 계십니까? BTW 최신 버전에서는'newff'가 더 이상 사용되지 않습니다.) 요점은 각 실행 전에 동일한 방식으로 난수 생성기를 시드하는 것을 기억하는 것입니다 , 당신은 훈련 신경 네트워크의 결과를 비교하려는 경우. – Amro

관련 문제