[python] 파이썬 PyTorch에서 모델의 가중치를 업데이트하는 방법은?
PyTorch는 딥러닝 모델을 구축하고 학습하는 데 사용되는 인기있는 프레임워크입니다. 모델의 가중치를 업데이트하는 방법은 매우 중요합니다. 이를 통해 모델을 훈련시키거나 새로운 데이터에 대한 예측을 수행할 수 있습니다.
가장 간단한 방법은 옵티마이저(optimizer)를 사용하여 가중치를 업데이트하는 것입니다. PyTorch의 torch.optim 모듈은 다양한 옵티마이저를 제공합니다. 가장 일반적으로 사용되는 옵티마이저 중 하나는 torch.optim.SGD
입니다. 다음은 가중치를 업데이트하는 예시 코드입니다:
import torch
import torch.nn as nn
import torch.optim as optim
# 예제를 위해 간단한 모델 정의
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.linear = nn.Linear(10, 1)
def forward(self, x):
return self.linear(x)
# 모델 인스턴스 생성
model = MyModel()
# 손실 함수 정의
criterion = nn.MSELoss()
# 옵티마이저 정의
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 입력 데이터 및 레이블 생성
inputs = torch.randn(10)
labels = torch.randn(1)
# 학습
optimizer.zero_grad() # 그래디언트 초기화
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward() # 역전파
optimizer.step() # 가중치 업데이트
# 새로운 데이터에 대한 예측
new_inputs = torch.randn(10)
new_outputs = model(new_inputs)
위의 예시에서, 우리는 MyModel
이라는 가상의 모델을 정의합니다. 그리고 torch.optim.SGD
를 사용하여 옵티마이저를 초기화합니다. optimizer.zero_grad()
를 사용하여 그래디언트를 초기화하고, 모델의 출력과 레이블을 사용하여 손실을 계산합니다. 그리고 loss.backward()
를 호출하여 그래디언트를 계산하고, optimizer.step()
을 호출하여 가중치를 업데이트합니다.
새로운 데이터에 대한 예측을 수행하기 위해, 위의 코드에서처럼 새로운 입력 데이터를 모델에 전달하여 model()
을 호출하면 됩니다.
추가적인 정보나 참고 자료를 원하실 경우, PyTorch 공식 문서(https://pytorch.org/docs/stable/index.html)를 참조하시기 바랍니다.