[데브코스 자율주행 TIL] DAY 64 (12/18)

happy_quokka·2023년 12월 18일
0
post-thumbnail

2023.12.18 DAY64

torch가 아닌 단순 numpy를 사용하여 간단한 CNN을 구현해보았다. forward, backward 다 구현해보았다. forward의 경우 수월하게 따라갔는데 backward는 처음에 많이 헷갈렸다ㅠ 수식으로는 다 이해가 되었지만 실제로 하나하나 구현해보니 왜 단순 곱셈을 하다가 conv을 수행하지? 왜 shape을 저렇게 변환하지? 라는 의문이 생겼다. 지금은 의문이 해결되었고 이렇게 다 구현해보는게 많은 도움이 되는 것 같다는 생각을 했다.

오늘 거의 코딩을 한 것 같아서 TIL을 어떻게 적어야할지 모르겠다. 구현한 코드를 올려야겠다.


📝 배운 내용

shallow network

구조

W2 미분

  • 미분을 진행하면 2x2 행렬이 나오게 되는데 W2는 1x4 형식이기 때문에 reshape을 해준다

W1 미분

  • max pooling의 경우, 어느 위치의 값이 선택되었는지 확인하고 그 위치의 값을 1로 해주기 위해서 L1_max를 2배하여 L1_act(max pooling 진행하기 전의 값)과 비교한다
  • 그리고 그 값들에 미분값을 다 적용시켜야하기 때문에 diff_w1_b의 값도 2배를 해준다
  • 그 후에 마지막에는 conv를 수행한다. 그 이유는 아직 잘 모르겠다ㅠㅠ weigt 마다 갱신을 해주기 위해서 conv을 수행한다. 처음 filter를 씌울 때의 영역으로 conv를 수행한다.

0개의 댓글