Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Python
- 우분투
- pytorch
- 논문작성
- WOX
- Numerical Analysis
- 수식삽입
- 인공지능
- Dear abby
- ChatGPT
- Statics
- JAX
- 딥러닝
- MATLAB
- Julia
- 고체역학
- 생산성
- teps
- obsidian
- 에러기록
- 옵시디언
- LaTeX
- IEEE
- 텝스공부
- matplotlib
- 텝스
- 수치해석
- Zotero
- 논문작성법
- Linear algebra
Archives
- Today
- Total
뛰는 놈 위에 나는 공대생
[에러기록] Pytorch 모델 weight가 업데이트되는지 확인 본문
Pytorch 모델을 업데이트하려고 optimizer를 쓰는데 loss가 전혀 변하지 않는 것을 보고 업데이트 된 것인지 확인하고 싶었다.
다음 코드와 같이 일치하지 않는 부분이 있는지 확인하였다.
optimizer.zero_grad()
a = list(model.parameters())[0]
print(list(model.parameters())[0].grad) # gradient가 잘 계산되었는지 확인, None이면 이상한 것
loss.backward()
optimizer.step()
b = list(model.parameters())[0]
print(torch.equal(a.data, b.data)) # a와 b가 일치하는지 확인
업데이트 전 후의 parameter 값을 비교함으로써 업데이트되는지 확인할 수 있다.
다만 주의할 점은 learning rate를 너무 작게 잡고 gradient가 작으면 한 스텝마다 거의 업데이트되지 않는다. 이 와중에 자료형이 float32이면 분명 업데이트 되었음에도 수치적으로 표현이 되지 않아 a,b가 동일하게 나올 수 있다.
그래서 이런 경우에는 동일한 input을 넣어서 model의 output이 동일한지 비교해보도록 한다.
나의 경우에는 업데이트가 되지 않는 것을 위의 코드로 확인했고
알고보니 model을 optimizer를 정의한 후에 만들어서 그런 것이었다(...멍청)
'프로그래밍 Programming' 카테고리의 다른 글
Comments