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()를 사용해 초기화해야 한다.
주의 사항
- .grad는 leaf 텐서에 대해서만 자동으로 계산된다. 연산 결과로 생성된 비-leaf 텐서에는 기본적으로 .grad가 채워지지 않는다.
- 비-leaf 텐서에서 기울기를 보고 싶을 경우, 해당 텐서에 대해 retain_grad()를 명시적으로 호출해야 한다. [2]
- .grad가 None인 일반적인 원인은 다음과 같다:
- 파라미터의 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)을 갖는다.