본문 바로가기

네이버 부스트캠프 AI Tech

11.17 주간 회고록

11.13~ 11.17

이번주는 나름대로 매일 기록하고자 했다.

그에 따라서, 일별로 정리해보고자 한다.

[11.13]

PyTorch를 시작하며, PyTorch Template로 어떻게 프로젝트를 관리하는지에 대해 배웠다.

물론 기존에 Tensorflow를 사용해본 경험이 아주 도움이 많이 되었다고 생각한다.

https://sugar-acoustic-4ae.notion.site/PyTorch-Template-d92e249f479f4c31b7c6bb6489e0aa92?pvs=4

 

PyTorch Template

How this project works?

sugar-acoustic-4ae.notion.site

여기서 PyTorch Template에 대한 간단한 고찰을 진행했다. Template를 기반으로, 주먹구구식의 개발이 아닌 좀 더 정리되어있는 프로젝트를 할 수 있겠다는 생각이 들었다.

[11.14]

강의를 모두 수강하고, 과제1을 완벽하게 풀고자 했다.

https://sugar-acoustic-4ae.notion.site/PyTorch-11-14-0e7bcb334f2b4b5c8dcc88c6ba845008?pvs=4

 

[PyTorch] 11.14

apply 과제에서

sugar-acoustic-4ae.notion.site

 

처음 써보는 모듈도 사용해보고, 무엇보다 ALL PASS를 받을 수 있었다는 부분이 기분 좋았다.

hook에 대한 질의응답도 거치며, 이해를 더 깊이 할 수 있었다.

 

아래에는 본인이 질문한 질문과, 그에 따른 대답을 간략하게 적어보겠다.

 

Optional 과제에서, forward hook으로 왜 forward 자체가 변경되었는지 (즉, gradient update가 변경한 것에 대해 업데이트 되는 이유)
https://discuss.pytorch.org/t/using-forward-hooks-vs-modifying-the-forward-function/129923
가 위에서 보여지는 것과 같이, 완전히 동일하게 동작하기 때문일까요?
흑흑 뭔가 더 디테일하게 물어보고 싶은데 과제 정답을 알려주는 것일까 이정도로만 물어보겠습니다...

 

Using forward hooks vs Modifying the forward function

Hi, When we need to modify input to and output from forward function of a layer, I can think of two ways: Add forward_pre and forward hooks Modify the forward function of the layer itself. Below are simple illustration of each of these. In my opinion the t

discuss.pytorch.org

(사실 이 질문을 했을 때, 어느정도 이해가 되었지만 확인을 받고자 질문한 것도 있다... 위 링크에서 잘 설명하고 있다고 생각한다.)

 

해당 답변은 다음과 같이 왔다. 더욱 자세하고, 이해가 쉬웠다. 역시 공부는 같이 해야 효과가 좋다.

 

https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module.register_forward_hook

 

Module — PyTorch 2.1 documentation

Shortcuts

pytorch.org

 PyTorch 공식 docs에 forward hook에 관련된 내용이 나와 있습니다. 제가 이해한 것을 정리해 보면 아래의 순서대로 동작하는 것 같습니다:

  1. forward_hook은 forward() 함수가 호출될 때 같이 호출 됩니다.
  2. forward_hook을 통해 호출된 새로운 함수는 (self, args, kwargs, output)을 매개변수로 합니다.
  3. 이때 args에는 forward의 input data (학습 시키고자하는 Tensor)가 들어오게되고, output은 forward() 함수를 통해 계산되는 return 값(임시로 f_output 이라 칭함)이 들어 옵니다.
  4. 여기서 forward_hook을 통해 새롭게 호출한 함수에서 output을 새로 계산하여 return한다면(임시로 fh_output이라 칭함), forward()에서 계산한 output(f_output)과 상관 없이 fh_output을 출력하게 됩니다.
  5. 만약 forward_hook로 호출한 함수에서 fh_output을 리턴하지 않는다면 기존의 output(f_output)이 반환 됩니다.

정말 좋은 답변을 받았기에, 해당 답변을 해주신 캠퍼님께 감사하다!!

 

[11.15]

기본과제 2를 시작하고, 거의 끝마친 날이다. 기본 과제 1에서 Model 생성에 집중했다면, 기본 과제 2에서는 Model 학습에 필요한 Data 생성에 집중했다. 처음보는 함수들이 있었기 때문에, 구글을 활용하며 과제를 풀어나갔다.

 

https://sugar-acoustic-4ae.notion.site/PyTorch-11-15-300957a4e9db411bb874dec03e37ff2b?pvs=4

 

[PyTorch] 11.15

collate_fn을 사용하면…((피처1, 라벨1) (피처2, 라벨2))와 같은 배치 단위 데이터가 ((피처1, 피처2), (라벨1, 라벨2))이 된다…

sugar-acoustic-4ae.notion.site

 

[11.16]

심화과제를 완료했다!

심화과제는 아무래도 모델을 다뤄본 경험이 있던 터라, 크게 어렵지는 않았다.

따라서 개인적인 평가로는 기본 과제 2 >>> 기본 과제 1 > 심화 과제 1 순서로 어려웠다...

데이터 생성은 익숙하지 않기에 내가 갈고 닦아야 할 부분이라는 생각이 들었다.

https://sugar-acoustic-4ae.notion.site/PyTorch-11-16-b2ea5db4799343898e4366e8c3d912ae?pvs=4

 

[PyTorch] 11.16

[PyTorch] 심화 문제 transfer learning을 하는데 있어서 가장 마지막 fully connected layer(이하 fc)를 변경하며, weight를 불러오는 건가? 기존 모델(이하 model)의 fc는 input 512, output 1000 이고, 변경한 모델은 input

sugar-acoustic-4ae.notion.site

 

[11.17]

어제 심화과제를 완료해서 기분이 좋다. (그래..바로 이거야!)

금요일은 개인 공부할 시간이 빡빡하기 때문에... 오랜만에 코딩 테스트 문제와 다다음주에 발표할 논문을 찾아보고자 한다!!

'네이버 부스트캠프 AI Tech' 카테고리의 다른 글

끄적끄적 궁금증  (0) 2023.12.08
cGAN  (2) 2023.12.07
12.01 주간 회고록  (0) 2023.12.01
11.24 주간 회고록  (1) 2023.11.24
11.10 주간 학습 정리  (1) 2023.11.10