본문 바로가기
Deep learning

[DNN] Basic structure DNN using theano

by 공대우냉이 2016. 2. 1.

기본적인 구조의 DNN을 만들어 보고자 한다. 기본적인 뼈대만 구축할 생각이다. 사실 MLP나 다름없다.

MLP와 DNN의 가장 큰 차이는 hidden layer의 개수인데 사실 별 차이가 없긴하다.

theano를 이용할 예정인데 theano를 이용하여 기본적인 DNN 사용법을 익혀보기 위함이다.

우선 train, test data가 필요한데 이것은 랩실 형이 만들어 주었다. matlab을 이용하여

가우시안 분포를 이루는 5개의 class로 이뤄진 data set이다.

 

이 데이터 set은 직접 만들기 바란다. 공유하고 싶지만 내가 짠 코드가 아니니까..

힌트를 주자면 gaussian distribution에 대해 알면 쉽게 만들 수 있다.

우선 각 class의 1/5  정도는 test set으로 분류하고 train과 test data set으로 나눴다.

train 2000개 test 500개. 그러면 DNN 기본 구조가 되는 코드를 짜보자.

---------------------------------------------------------------------------------------------------------------------------------------------

hidden node layer가 1개이고, node 개수는 5개, learning rate는 0.001로 epoch를 100000번 반복하는 구조로 구성하였고 결과는 error rate가 19.4%가 나왔다.

또한 active function은 sigmoid를 사용하였다.

basic_dnn.pybasicDnn_result.log

코딩은 첨부파일을 참고 하시고, log파일은 epoch 100 마다 출력을 찍어 놨다.

기본 구조들은 모두 cnn 예제 코딩에서 필요한 것들을 모두 가져왔다.

그래도 update 과정과 negative log likelihood 부분은 나중에 한번 블로그에 정리하여 글을 쓸 예정이다.

 

다음으로 layer가 2개일 때, node개수를 10,30,60개 그리고 learning rate를 0.0001, 0.008로 주고 epoch를 8만번으로 반복하였다.

그 외 부분은 위의 스펙과 같다. 결과는 log파일을 참고 하시고 제일 잘 나온것이 18.2%의 error rate를 나타냈다.

basic_dnn_2.pybasicDnn2_result2.log

==============================================================================================================================================

P.S

code는 theano의 cnn 예제를 참고 하시기 바랍니다.

그 code에서 필요한 것들만 가져와서 제가 짜봤는데 부족한 부분이나 잘못된 부분, 또는 다른 idea가 있으신분 께서는 'Please, contact me.'

사실 워낙 기본적인 코딩이라 제가 짰다고 하기에는 너무 억지가 있는것 같네요. 그래도 한번 짜보면서 데이터 형식 맞추는것과

theano의 function mechanism에 대해서 조금 생각해보면서 이해도 많이 되는 시간이었던것 같네요. 한번 직접 짜 보시는것도 좋을거 같습니다.

'Deep learning' 카테고리의 다른 글

[data] why use the train, valid, test set to create model?  (0) 2016.01.22
compare Theano with Torch7  (0) 2016.01.21
Compare DNN toolkit(summary)  (0) 2016.01.04
Compare DNN Toolkits  (0) 2016.01.04