Optimizing Model Parameters

안소희·2024년 10월 11일

PyTorch

목록 보기
7/8

모델 매개변수 최적화

이제 데이터에 맞춰 모델을 학습하고, 검증 및 테스트할 차례이다. 이 과정은 여러 반복 단계를 거치며, 각 단계에서 모델은 추측을 하고, 손실을 계산한 후 경사하강법을 사용해 매개변수를 최적화한다.

기본 코드

FashionMNIST 데이터를 로드하고, NeuralNetwork 클래스를 정의하여 신경망 모델을 생성한다.

import torch
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets, transforms

training_data = datasets.FashionMNIST(
    root="data", train=True, download=True, transform=transforms.ToTensor()
)
test_data = datasets.FashionMNIST(
    root="data", train=False, download=True, transform=transforms.ToTensor()
)
train_dataloader = DataLoader(training_data, batch_size=64)
test_dataloader = DataLoader(test_data, batch_size=64)

class NeuralNetwork(nn.Module):
    def __init__(self):
        super().__init__()
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(28*28, 512),
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10),
        )
    def forward(self, x):
        x = self.flatten(x)
        return self.linear_relu_stack(x)
model = NeuralNetwork()

하이퍼파라미터

모델 학습에 필요한 조절 가능한 매개변수이다:

  • 에폭(epoch): 데이터셋을 반복하는 횟수
  • 배치 크기(batch size): 매개변수 갱신 전 처리할 샘플 수
  • 학습률(learning rate): 매개변수 업데이트 비율
learning_rate = 1e-3
batch_size = 64
epochs = 5

최적화 단계 (Optimization Loop)

최적화 단계는 학습 단계검증 단계로 나뉜다.

  1. 손실 함수: 예측과 실제 값의 차이를 측정하는 함수로, nn.CrossEntropyLoss를 사용한다

    python
    Copy code
    loss_fn = nn.CrossEntropyLoss()
    
  2. 옵티마이저(Optimizer): 경사하강법을 통해 모델 매개변수를 조정한다. 여기서는 SGD를 사용한다.

    optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
  3. 학습 루프:

    • optimizer.zero_grad(): 변화도를 초기화
    • loss.backward(): 손실의 변화도를 계산
    • optimizer.step(): 매개변수를 업데이트
profile
인공지능.관심 있습니다.

0개의 댓글