[PyTorch] gradient descent로 변수를 직접 update할 때 주의할 점

2022. 7. 14. 16:05·프로그래밍 Programming/파이썬 Python

코드 상에서 특정 변수를 따로 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
'프로그래밍 Programming/파이썬 Python' 카테고리의 다른 글
  • [Matplotlib] Matplotlib savefig 기능 정리
  • [Python] matplotlib default 설정
  • [PyTorch] DataLoader shuffle 기능 사용 시, RuntimeError: Expected a 'cuda' device type for generator but found 'cpu'
  • [PyTorch] GPU에서 텐서 사용하기
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (460)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (21)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 유학 생활 Daily (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Dear abby
    텝스공부
    수치해석
    LaTeX
    딥러닝
    우분투
    teps
    IEEE
    Statics
    pytorch
    MATLAB
    ChatGPT
    Julia
    Python
    Zotero
    Linear algebra
    obsidian
    서버
    Numerical Analysis
    고체역학
    논문작성
    논문작성법
    matplotlib
    텝스
    WOX
    에러기록
    인공지능
    생산성
    JAX
    옵시디언
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[PyTorch] gradient descent로 변수를 직접 update할 때 주의할 점
상단으로

티스토리툴바