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 | 31 |
Tags
- 텝스
- teps
- 논문작성
- LaTeX
- Dear abby
- MATLAB
- 딥러닝
- 옵시디언
- obsidian
- 수식삽입
- Zotero
- Statics
- Numerical Analysis
- 논문작성법
- 우분투
- ChatGPT
- pytorch
- 텝스공부
- 생산성
- 고체역학
- 인공지능
- JAX
- matplotlib
- Python
- IEEE
- 수치해석
- WOX
- Linear algebra
- 에러기록
- Julia
Archives
- Today
- Total
뛰는 놈 위에 나는 공대생
[PyTorch] gradient descent로 변수를 직접 update할 때 주의할 점 본문
프로그래밍 Programming/파이썬 Python
[PyTorch] gradient descent로 변수를 직접 update할 때 주의할 점
보통의공대생 2022. 7. 14. 16:05코드 상에서 특정 변수를 따로 gradient descent 방법으로 업데이트해야할 일이 있는데 이상하게 에러가 났다.
그래서 쉬운 예제를 통해서 이해를 해보고자 했다.
a = torch.linspace(0., 2. * math.pi, steps=25, requires_grad=True)
b = torch.sin(a)
c = 2 * b
d = c + 1
out = d.sum()
out.backward(retain_graph=True)
gradient = a.grad.clone().detach()
a -= 0.001 * gradient
print(a.requires_grad)
이렇게 코드를 짜면
RuntimeError: a leaf Variable that requires grad is being used in an in-place operation.
다음과 같은 error가 return된다.
a는 여러 개의 하위 값들을 가지고 있어서 gradient에 learning rate를 곱해서 바로 업데이트 할 수 없다.
대신
a.data -= 0.001 * gradient
으로 업데이트한다.
그리고 굳이 gradient를 따로 두지 않고 a.grad를 사용해도 된다.
'프로그래밍 Programming > 파이썬 Python' 카테고리의 다른 글
[Matplotlib] Matplotlib savefig 기능 정리 (0) | 2022.08.21 |
---|---|
[Python] matplotlib default 설정 (0) | 2022.07.16 |
[PyTorch] DataLoader shuffle 기능 사용 시, RuntimeError: Expected a 'cuda' device type for generator but found 'cpu' (0) | 2022.07.14 |
[PyTorch] GPU에서 텐서 사용하기 (0) | 2022.07.12 |
[PyTorch] PyTorch 다차원 텐서 곱(matmul) (0) | 2022.07.10 |
Comments