일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pytorch
- back propagation
- BFS
- 자바스크립트
- 조합론
- 크루스칼
- DP
- Overfitting
- c++
- 2023
- 너비 우선 탐색
- 회고록
- NEXT
- tensorflow
- 우선 순위 큐
- dfs
- 이분 탐색
- 분할 정복
- object detection
- 미래는_현재와_과거로
- 알고리즘
- 세그먼트 트리
- 다익스트라
- 백트래킹
- 가끔은_말로
- dropout
- 가끔은 말로
- lazy propagation
- 문자열
- 플로이드 와샬
- Today
- Total
목록Code about AI/PyTorch (10)
Doby's Lab

🤔 Problem PyTorch의 Tensor는 requires_grad가 True로 되어있을 때, 변화도에 대한 연산의 추적을 가능하게 합니다. 즉, 각 Tensor에 대해서 .grad 속성과 .grad_fn 속성이 생깁니다. .grad는 현재 Tensor에 대해 목적함수가 얼마큼 변했나에 대한 변화도의 값, 즉 미분 값을 담고 있으며, .grad_fn은 이전 Tensor에 대해서 현재 Tensor를 미분해 줄 때, 어떠한 연산에 대한 미분을 해주어야 하는지 특정 연산에 대한 미분 함수 정보를 담고 있습니다. (값이 아닌 함수 정보임을 유의) 예를 들어, b = a + 2라면, b에는 a에 대해 미분을 할 때, 더하기 연산을 통해 생성이 되었으니 더하기 연산으로 만들어졌다는 것을 알고 있다는 뜻입니다...
🤔 QuestionPyTorch에서는 모델을 학습시킬 때, (특히 Back Propagation이 일어날 때) 아래와 같은 과정을 거칩니다. 1) optimizer의 종류와 learning rate에 따른 optimizer를 선언하면서 model의 parameter 값을 넘깁니다.2) .grad 속성 값을 optim.zero_grad()를 통해 초기화시킵니다. (.grad accumulate 방지)3) 그 다음, .backward()를 호출시켜서 각 Tensor의 .grad 속성을 갱신합니다. 4) 마지막으로, optimizer.step()을 통해서 각 Tensor의 업데이트를 진행합니다. 이 과정에서 궁금했던 부분은 '정말 실제 model의 가중치를 업데이트하는가?'였습니다. 너무나..