PyTorch는 딥러닝 모델을 학습시키는 데 사용되는 강력한 프레임워크입니다. 모델을 학습시킬 때, 학습 과정을 모니터링하여 모델의 성능 및 진행 상황을 확인하는 것은 매우 중요합니다. 이를 위해 PyTorch에서는 다양한 기능을 제공합니다.
1. 진행 상황 출력하기
학습 과정에서 각 에폭(epoch)마다 훈련 손실(training loss) 및 검증 손실(validation loss)을 출력하여 전반적인 학습 진행 상황을 확인할 수 있습니다. 아래는 이를 위한 간단한 예제 코드입니다.
import torch
import torch.nn as nn
import torch.optim as optim
# 모델 정의
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
# 모델 구조 정의
def forward(self, x):
# forward pass 정의
# 학습 데이터 로드 및 전처리
# 모델 인스턴스 생성
model = MyModel()
# 손실 함수 및 옵티마이저 정의
# 학습 루프
for epoch in range(num_epochs):
# 훈련 모드로 설정
model.train()
# 데이터 배치별로 학습 진행
# 에폭마다 훈련 손실 출력
print(f"Epoch [{epoch+1}/{num_epochs}], Training Loss: {train_loss:.4f}")
# 검증 모드로 설정
model.eval()
# 검증 데이터로 모델 성능 평가
# 에폭마다 검증 손실 출력
print(f"Epoch [{epoch+1}/{num_epochs}], Validation Loss: {val_loss:.4f}")
위 예제 코드에서 train_loss
와 val_loss
는 각각 훈련 손실과 검증 손실을 나타내는 변수입니다. 이를 통해 학습 과정 중 손실 값의 변화를 확인할 수 있습니다.
2. TensorBoard 사용하기
TensorBoard는 TensorFlow의 시각화 도구로 널리 알려져 있지만, PyTorch에서도 사용할 수 있습니다. TensorBoard를 사용하면 학습 과정에서 발생하는 다양한 정보를 시각화하여 확인할 수 있습니다. 아래는 PyTorch에서 TensorBoard를 사용하는 예제 코드입니다.
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.tensorboard import SummaryWriter
# 모델 정의
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
# 모델 구조 정의
def forward(self, x):
# forward pass 정의
# 학습 데이터 로드 및 전처리
# 모델 인스턴스 생성
model = MyModel()
# 손실 함수 및 옵티마이저 정의
# TensorBoard를 위한 SummaryWriter 생성
writer = SummaryWriter()
# 학습 루프
for epoch in range(num_epochs):
# 훈련 모드로 설정
model.train()
# 데이터 배치별로 학습 진행
# 에폭마다 훈련 손실 기록
writer.add_scalar("Training Loss", train_loss, epoch)
# 검증 모드로 설정
model.eval()
# 검증 데이터로 모델 성능 평가
# 에폭마다 검증 손실 기록
writer.add_scalar("Validation Loss", val_loss, epoch)
# TensorBoard 실행
writer.close()
위 예제 코드에서 SummaryWriter
를 사용하여 훈련 손실과 검증 손실 값을 기록합니다. 이후 tensorboard --logdir=runs
명령어를 실행하여 터미널에서 TensorBoard를 실행할 수 있습니다. TensorBoard에서는 그래프, 임베딩, 히스토그램, 학습 곡선 등 다양한 정보를 확인할 수 있습니다.
이와 같이 PyTorch에서는 손실 값의 출력 및 TensorBoard를 통한 시각화 등의 방법을 통해 모델의 학습 과정을 모니터링할 수 있습니다.