머신러닝을 진행할 때, 네트워크가 어떻게 학습이 되고 있는지 확인하기 위해서는 loss 그래프 등을 확인할 필요가 있다. 이때 흔히 사용하는 것이 TensorBoard이다.
Tensorboard는 다음과 같은 기능을 제공한다.
- 손실 및 정확도와 같은 측정항목 추적 및 시각화
- 모델 그래프(작업 및 레이어) 시각화
- 시간의 경과에 따라 달라지는 가중치, 편향, 기타 텐서의 히스토그램 확인
- 저차원 공간에 임베딩 투영
- 이미지, 텍스트, 오디오 데이터 표시
- TensorFlow 프로그램 프로파일링
- 그 외 다양한 도구
그럼 Pytorch에서 Tensorbard를 어떻게 사용할 수 있을지 알아보자!
1. SummaryWriter 인스턴스 생성하기
import torch
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
Writer는 기본적으로 ./runs/ 디렉토리에 출력된다고 한다. 원하는 디렉토리에 출력하려면 다음과 같이 경로를 지정해주어야한다.
writer = SummaryWriter('logs/')
2. 스칼라 기록하기
각 학습 단계에서 손실 값이나, 각 에폭 이후의 정확도를 알기 위해서 스칼라 값을 기록해줘야한다. 아래 코드에서는 forward 함수의 loss 값을 update하는 부분에서 add_scalar 함수를 통해 loss 값과 epoch 값을 기록해주었다.
x = torch.arange(-5, 5, 0.1).view(-1, 1)
y = -5 * x + 0.1 * torch.randn(x.size())
model = torch.nn.Linear(1, 1)
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.1)
def train_model(iter):
for epoch in range(iter):
y1 = model(x)
loss = criterion(y1, y)
writer.add_scalar("Loss/train", loss, epoch)
optimizer.zero_grad()
loss.backward()
optimizer.step()
train_model(10)
writer.flush()
3. 스칼라 기록 끝내기
학습이 끝난 뒤에는 꼭 close 메소드를 호출해주어야한다. 만약 호출해주지 않는다면 기록한 scalar 값이 저장되지 않는다고 한다.
writer.close()
4. TensorBoard 실행하기
기록된 데이터를 시각화하기 위해서는 다음과 같이 TensorBoard를 설치해줘야한다.
$ pip install tensorboard
아래와 같이 텐서보드를 실행해준다.
$ tensorboard --logdir ./logs
logdir 인자는 TensorBoard가 출력할 수 있는 이벤트 파일들을 찾을 디토리를 가리킨다. 디렉토리 구조에서는 *tfevents.* 형태로 이루어진 파일을 재귀적으로 탐색하게 된다.
위의 명령어를 실행해주면 URL 하나를 제공해주는데 (아래처럼)
TensorBoard 2.8.0 at http://localhost:6006/
이 URL에 접속하면 Tensorboard를 확인할 수 있다.
Reference
https://tutorials.pytorch.kr/recipes/recipes/tensorboard_with_pytorch.html
'연구 > PyTorch' 카테고리의 다른 글
[PyTorch] Tensor 조작법 기본) indexing, view, squeeze, unsqueeze (0) | 2023.09.17 |
---|---|
PyTorch로 AutoEncoder 구현하기 (0) | 2023.08.16 |
PyTorch DataLoader 사용하기 & epoch, batch, iteration 개념 (0) | 2023.08.03 |
Pytorch로 dataset 구성하기 (0) | 2023.07.27 |
Pytorch 사용해서 간단한 Neural Network 설계하기 (0) | 2023.07.17 |