PyTorch로 배우는 딥러닝 입문
Jasmin Ludolf
Senior Data Science Content Developer, DataCamp
$$
| 데이터 비율 | 역할 | |
|---|---|---|
| 학습(Training) | 80-90% | 모델 파라미터 학습 |
| 검증(Validation) | 10-20% | 하이퍼파라미터 튜닝 |
| 테스트(Test) | 5-10% | 최종 성능 평가 |
$$
$$
각 에포크에서:
training_loss = 0.0for inputs, labels in trainloader: # 순전파 outputs = model(inputs) # 손실 계산 loss = criterion(outputs, labels)# 역전파 loss.backward() # 그래디언트 계산 optimizer.step() # 가중치 업데이트 optimizer.zero_grad() # 그래디언트 초기화# 손실 합산 training_loss += loss.item()epoch_loss = training_loss / len(trainloader)
validation_loss = 0.0 model.eval() # 평가 모드로 전환with torch.no_grad(): # 효율을 위해 그래디언트 비활성화for inputs, labels in validationloader: # 순전파 outputs = model(inputs) # 손실 계산 loss = criterion(outputs, labels) validation_loss += loss.item() epoch_loss = validation_loss / len(validationloader) # 평균 손실 계산model.train() # 학습 모드로 복귀

import torchmetrics# 정확도 지표 생성 metric = torchmetrics.Accuracy(task="multiclass", num_classes=3)for features, labels in dataloader: outputs = model(features) # 순전파 # 배치 정확도 계산(one-hot 레이블에 argmax 유지) metric.update(outputs, labels.argmax(dim=-1))# 에포크 전체 정확도 계산 accuracy = metric.compute()# 다음 에포크를 위해 초기화 metric.reset()
PyTorch로 배우는 딥러닝 입문