일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데이터베이스
- 자바
- 데이터분석
- 정보처리기사실기
- JDBC
- 딥러닝
- 자바스크립트심화
- 파이썬
- html/css
- 컴퓨터구조
- JSP/Servlet
- 정보처리기사필기
- 연습문제
- 컴퓨터비전
- 자바스크립트
- 상속
- 순환신경망
- 자바 실습
- CSS
- c언어
- 혼공머신
- ChatGPT
- 중학수학
- 중학1-1
- 개발일기
- JSP
- 디버깅
- 머신러닝
- SQL
- rnn
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
딥러닝 14 - Callback 함수 실습해보기 본문
이 내용은 공부를 하지 않으려고 했는데 그래도 코드만 있는채로 남겨두는 게 영 걸려서 그냥 마저 학습을 진행하기로 했다. 수업 영상은 없지만 모르는 건 찾아보면서 공부하면 될 것 같았다.
Callback 함수 실습해보기
매번 런타임 중단시 다시 학습하는 것이 아니라 학습한 모델을 저장하여 이것을 불러서 쓰는 기능이다.
Callback 함수는 딥러닝 모델 학습 중 특정 시점(에포크 종료, 배치 처리 후 등)에 호출되어 다양한 작업을 수행할 수 있게 해주는 함수이다. 이러한 콜백 함수는 딥러닝 모델의 성능을 향상시키고, 학습 과정을 더욱 효율적으로 관리하기 위해 사용된다.
Callback 함수의 주요 역할
Callback 함수는 모델 학습 중간에 특정 이벤트가 발생할 때 실행되며, 다음과 같은 작업을 할 수 있다.
- 학습 중단(Early Stopping) : 성능이 더 이상 개선되지 않으면 학습을 중단시킨다.
- 모델 저장(Model Checkpointing) : 특정 조건(예: 검증 정확도나 손실이 개선될 때)에서 모델의 가중치를 저장한다.
- 학습률 조정(Learning Rate Scheduling) : 에포크가 진행됨에 따라 학습률을 동적으로 조정한다.
- 로그 기록(Logging) : 학습 도중 손실 값, 정확도, 기타 성능 지표 등을 로그로 남긴다.
- 사용자 정의 콜백 : 사용자가 직접 원하는 조건이나 규칙을 정의하여 학습 과정에 적용할 수 있다.
모델을 학습하는데 굉장히 시간이 많이 걸린다. 지금까지 실행했던 모델 중에 가장 속도가 느린 것 같다. 다른 코드는 이전에 실습에서 많이 설명했으므로 여기서는 Callback 함수에 대한 내용만 설명해보려고 한다.
callbacks=[mcp, early]에서 학습 중 콜백 함수를 사용한다. 여기에 사용된 두 콜백 mcp와 early는 각각 ModelCheckpoint와 EarlyStopping을 의미할 가능성이 크다.
mcp (ModelCheckpoint) : ModelCheckpoint 콜백은 학습 중 모델의 성능이 개선될 때마다 해당 시점의 모델 가중치를 저장한다. 예를 들어, 검증 데이터에 대한 손실이나 정확도가 가장 좋을 때 모델을 저장하여 나중에 사용할 수 있다.
early (EarlyStopping) : EarlyStopping 콜백은 학습이 더 이상 개선되지 않으면 학습을 중단시킨다. 이는 과적합을 방지하고, 불필요한 학습을 줄이는 데 도움이 된다.
36에서 모델이 중단되었는데 이러한 callback 함수 때문에 그러하다. 모델은 검증 데이터에 대한 성능이 개선될 때마다 가중치를 저장하며, 성능이 더 이상 개선되지 않으면 학습을 자동으로 중단하는 콜백을 포함하고 있다. 즉 100 에포크 동안 학습이 진행되지만, EarlyStopping에 의해 조기 종료될 수 있는 것이다.
드디어 이 코드를 실행시켰다. 어찌나 안 되던지.. 근데 마운트를 안 해서 그런 거였다. 마운트를 해도 안 나타났는데 한참 있다가 뜨는 것 같았다.
다른 손글씨도 한번 옮겨보기로 했다.
이것도 흑백으로 변환시켰다.
오류 코드 다시 실행해보기
코드가 계속 실행이 안 되서 그 이유를 분석해보니 데이터에 선생님이 제공하신 파일이 빠져있어서 그런 거였다. 다른 그림 파일은 픽셀이 맞지 않아서 이 모델에는 처음부터 적용할 수가 없는 거였다.
그래도 실패를 해보며 많은 것들을 배우는 시간이었다.
이 코드로 실행시키는데 많이 어려웠다. 역시 수업 영상이 없으니 코드를 이해하는데 어려움이 있었다. 그래도 지금까지 공부하면서 단 한번도 문제를 풀지 못한 적은 없었다.
이번에도 난 반드시 해결하겠다는 일념으로 도전했더니 풀리지 못하는 문제는 없었다. 모델을 불러와서 예측을 했다. 이 모델의 클래스는 8번임을 알 수 있었다.
학습을 마치고
이렇게 오늘 12시 안에 마치기로 했던 딥러닝 공부를 모두 다 마쳤다. 하루만에 일주일치 딥러닝 수업을 전부다 학습하고 정리하다니 내가 생각해도 참 대단했다. 그리고 수업 영상이 없는 것들도 코드만 보고 해석해서 이렇게 이해하고 공부를 다 마쳤다는 것도 놀라웠다.
역시 마음 먹고 하면 세상에 못할 게 하나도 없었다. 그동안 내가 뭔가 뚜렷하게 이룬 성과가 없었던 건 열심히 하지 않았기 때문이다. 단 한번도 공부도 그 무엇도 열심히 해본 역사가 없었다. 이제야 난 철이 들고 성숙해지는 걸 느낀다.
이제 진짜 어른이 되는 것 같았다. 오늘은 철야를 하기로 했으니 바로 이어서 정처기 실기 공부를 시작해볼 것이다.
'인공지능 > 딥러닝' 카테고리의 다른 글
텐서플로 1 - 텐서플로에 대하여 : 텐서플로2와 텐서플로1의 차이점 (0) | 2024.10.01 |
---|---|
딥러닝 개발 환경 구축 - 구글 코랩으로 실행하기 (0) | 2024.10.01 |
딥러닝 13 - 패션 데이터 분류 실습해보기 (0) | 2024.09.22 |
딥러닝 12 - 경사하강법의 종류와 특징에 대하여 (0) | 2024.09.22 |
딥러닝 11 - 활성화 함수, 오차역전파, 경사하강법 그리고 relu 함수에 대하여 (0) | 2024.09.22 |