현실감각 0% :: MATLAB을 이용한 인공신경망(neural network) 소스

컴퓨터 관련 2009. 9. 7. 20:19

MATLAB을 이용한 인공신경망(neural network) 소스



오일석씨가 지은 패턴인식 책 보고 완성.
Digital Image Processing과 Neural Networks for Pattern Recognition을 보며 신나게 해딩하던 차에 이런 좋은 한글책을 ^-^ 세종대왕 만세!!
귀찮아서 그냥 대충 코딩했기 때문에 최적화 뭐 이런거 하나도 안되어있음. 매트랩이란 녀석이 최적화한다고 속도가 엄청 빨라지는것도 아니고..ㅋ


학습값
I =
    0.8112    0.0193    0.0839    0.9748
    0.6513    0.2312    0.4035    0.1220
    0.2684    0.2578    0.3317    0.1522
    0.3480    0.1217    0.8842    0.0943
    0.9300    0.3990    0.0474    0.3424
    0.7360    0.7947    0.5449    0.6862
    0.8936    0.0548    0.3037    0.0462
    0.1955    0.7202    0.7218    0.8778
    0.5824    0.0707    0.9227    0.8004
    0.2859    0.5437    0.9848    0.7157

목적값
T =
     1     0     0
     1     0     1
     1     1     0
     0     0     0
     1     1     1
     0     0     1
     0     1     1
     0     1     1
     1     1     1
     1     1     1

입력층과 은닉층간의 가중치 u
u =
    0.9628   -1.0548   -1.4900    4.6783    0.3130    1.9933    4.3942    1.9676    0.0856   -1.4651    1.0196    0.1796    0.2629
   -3.6112   -0.8629   -0.5201   -0.9986    4.4307    1.1881   -3.1616    2.9116    0.9480   -1.5138    2.3744   -1.2099    0.0539
    2.4828   -0.1772    0.9085   -0.7226   -0.9081   -0.1228   -4.3781    3.3554    0.2269   -0.0148    3.1880   -0.5654   -0.1098
   -6.2477   -0.3111   -2.9886   -1.7098    1.8842    0.0702   -3.0357   -1.5709    0.1525   -0.2013   -2.1933   -0.6751    0.2851
    0.0799    0.6906    0.1948   -0.8849   -3.8720   -0.8651   -1.5374   -0.7111   -0.4327    0.9893    1.1455    0.7605    0.4394

은닉층과 출력층간의 가중치 v
v =
   -5.1439   -2.6505   -0.6496
    0.6622    0.9621   -1.2617
    0.0273   -1.7237   -1.9407
    1.7515   -3.6440    1.6147
   -4.5748   -2.1589    3.2406
   -0.7716   -1.4656    1.5587
   -1.5545    5.2279    0.7999
   -1.9958    1.5138    4.1915
   -0.8095   -0.1873    0.4061
    1.3743    1.2738   -1.5010
   -1.4723    2.6831    2.4242
    1.4935   -0.0126   -0.7687
    0.5689    0.3002   -1.2387

학습값을 그대로 이용하여 실험하였을때의 결과
output =
    0.9999    0.0009    0.0036
    0.9054    0.0471    0.9537
    0.9892    0.8976    0.0049
    0.0087    0.0011    0.0035
    0.9840    0.9504    0.9992
    0.0034   -0.0008    1.0000
    0.0082    0.8939    0.9774
    0.0152    0.9851    0.9980
    0.9970    0.9724    0.9415
    0.9000    0.9943    0.9848


귀찮아서 학습값을 실험데이터로 돌렸는데.. 뭐 결과는 나쁘지 않았다.
인터넷에 떠도는 인공신경망 소스들 대다수가 출력값이 1개만 제대로 나오는데 비해 3개를 하던 10개를 하던 만족할 만한 결과가 나왔으니 뭐...ㅋ

파일은 아래 첨부


파일설명
   nt : 인공신경망 트레이닝 함수.  ex : [u v] = nt(I, T);
   nr : 인공신경망 테스트 함수.  ex : output = nr(I, u, v);
   sig, sigp : 시그모이드 함수.