PyTorch Parameter grad

IT 위키
인공무능 (토론 | 기여)님의 2025년 10월 9일 (목) 13:50 판 (새 문서: '''Parameter.grad''' 속성(PyTorch)은 '''torch.nn.Parameter''' 객체에 대해 역전파(backpropagation)를 통해 계산된 '''기울기(gradient)''' 를 저장하는 텐서 속성이다. ==개요== *'''Parameter''' 객체는 '''requires_grad=True'''일 때, 손실 함수에 대해 '''loss.backward()'''가 호출되면 '''.grad''' 속성에 기울기 값이 저장된다. <ref>[https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html Autograd tutorial — PyTorch]...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Parameter.grad 속성(PyTorch)은 torch.nn.Parameter 객체에 대해 역전파(backpropagation)를 통해 계산된 기울기(gradient) 를 저장하는 텐서 속성이다.

개요

  • Parameter 객체는 requires_grad=True일 때, 손실 함수에 대해 loss.backward()가 호출되면 .grad 속성에 기울기 값이 저장된다. [1]
  • .grad 속성은 기본적으로 None이며, 역전파 이후에 같은 크기의 텐서로 채워진다.
  • 이 속성은 학습 시 옵티마이저가 파라미터를 업데이트할 때 사용된다.

동작 방식

  • 손실(loss)을 계산한 뒤 loss.backward()를 호출하면, Autograd 엔진이 연산 그래프를 따라 역전파를 수행하고 각 파라미터의 .grad 속성에 편미분 값을 저장한다.
  • .grad는 해당 파라미터와 같은 shape을 가지며, 손실에 대한 파라미터의 기울기를 나타낸다.
  • 모델 학습 반복(epoch)마다 기울기를 누적하지 않도록 optimizer.zero_grad() 또는 model.zero_grad()를 사용해 초기화해야 한다.

주의 사항

  • .gradleaf 텐서에 대해서만 자동으로 계산된다. 연산 결과로 생성된 비-leaf 텐서에는 기본적으로 .grad가 채워지지 않는다.
  • 비-leaf 텐서에서 기울기를 보고 싶을 경우, 해당 텐서에 대해 retain_grad()를 명시적으로 호출해야 한다. [2]
  • .gradNone인 일반적인 원인은 다음과 같다:
  • 파라미터의 requires_grad=False인 경우
  • 아직 backward()가 호출되지 않은 경우
  • 해당 파라미터가 연산 그래프에 사용되지 않은 경우

활용 예

import torch
import torch.nn as nn

model = nn.Linear(2, 1)  # 가중치 2개 + 편향 1개
x = torch.tensor([[1.0, 2.0]], requires_grad=True)
y = torch.tensor([[1.0]])

criterion = nn.MSELoss()
output = model(x)
loss = criterion(output, y)

loss.backward()

for name, param in model.named_parameters():
    print(name, param.grad)

출력 예시

weight tensor([[-0.1723, -0.3445]])
bias tensor([-0.3445])

각 기울기는 손실 함수에 따라 자동 계산되며, 모델 파라미터와 같은 모양(shape)을 갖는다.