관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

CNN 2 - 합성곱 신경망 실습해보기 본문

인공지능/딥러닝

CNN 2 - 합성곱 신경망 실습해보기

huenuri 2024. 10. 28. 12:14

조금 늦은 아침을 먹고 이이서 딥러닝 실습을 시작해 보겠다.


 

 

 

합성곱 신경망 실습해 보기

 

 

라이브러리와 손글씨 데이터를 불러온 다음, 훈련 데이터와 테스트 데이터로 나눈다.

 

 

 

데이터의 크기를 확인하면 이와 같다. 이미지 색상은 어떻게 작성할 수 있을까?

 

 

 

 

 

 

 

 

0부터 9까지의 숫자가 출력된다.


 

 

 

이미지 분석을 할 때 특징을 추출하는 층을 넣어준다.

 

 

 

 

 

 

 

 

 

Maxpooling 과정에서 특징이 아닌 부분을 삭제하는 과정을 거친다.

 

 

 

 

이렇게 CNN 층을 구성했다.

 

 

 

 

모델이 저장된 폴더의 경로를 복사해서 붙여 넣고 뒤에 에포크와 정확도도 표시해 준다. 그리고 모델 객체를 생성한다. 오류가 많아서 코드를 정말 많이 수정했다. 수업을 들으면서 코드를 작성하니 틀리게 적는 부분이 정말 많았다.

 

 

다른 사람이 쓴 우수한 모델을 가져다가 수정해서 쓰는 것을 전이학습이라고 한다. NLP는 층을 깊게 쌓는 것이고 특성 추출부에서는  Conv 층과 Pooling 층을 추가한다.

 


 

 

 

학습을 마치고

합성곱 신경망에 대해서 개념과 실습을 진행해서 그런지 생각보다 이해하는 것이 별로 어렵지 않았다. 그러면서 한 가지 깨달은 사실이 있다. 어떤 강사도 책도 완벽하지 않다는 것이다. 어떤 부분이 부족하다 싶으면 거기서 잘하는 부분이 있고, 정말 잘된 것도 부족한 부분이 있다. 그렇기에 여러 가지 학습 도구를 활용해서 서로의 부족한 부분을 매우면서 공부할 때 상쇄효과가 일어난다는 것도 알게 되었다.

분명 이전 과정에서는 잘 이해가 되지 않았던 부분인데, 다음 과정으로 넘어가면 이전에 공부했던 내용이 이해가 되는 신기한 일들도 벌어졌다.

 

그러니까 공부가 어렵다고 해서 중단하지 말고 계속해서 하는 것이 중요하다는 굉장한 통찰을 얻었다.