AI Development/PyTorch
[PyTorch] 파이토치에서 TensorBoard 사용하기
꾸준희
2022. 2. 4. 14:44
728x90
반응형
텐서보드는 머신러닝 실험에 필요한 시각화 및 도구를 제공한다.
- 손실 및 정확도와 같은 측정항목 추적 및 시각화
- 모델 그래프(작업 및 레이어) 시각화
- 시간의 경과에 따라 달라지는 가중치, 편향, 기타 텐서의 히스토그램 확인
- 저차원 공간에 임베딩 투영
- 이미지, 텍스트, 오디오 데이터 표시
- TensorFlow 프로그램 프로파일링
- 그 외 다양한 도구
텐서보드를 파이토치 에서도 사용 할 수 있다.
1. SummaryWriter 인스턴스 생성하기
import torch
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
Writer 는 기본적으로 ./runs/ 디렉터리에 출력된다고 한다. 원하는 디렉터리에 출력하려면 아래와 같이 수정한다.
writer = SummaryWriter('logs/')
2. 스칼라 기록하기
각 학습 단계에서 손실 값이나 각 에폭 이후 정확도를 저장하는 것은 중요하다. 이를 위해 스칼라 값을 기록해준다.
forward 연산 중 loss 를 업데이트 하는 부분에서 add_scalar 함수를 통해 기록하고자 하는 변수를 파라미터로 넘겨준다.
예시 코드는 아래와 같다.
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 메소드를 꼭! 호출해준다. close 하지 않으면 loss 값이 저장되지 않는다고 한다.
writer.close()
4. 텐서보드 실행하기
아래와 같이 텐서보드를 실행해준다.
~$ tensorboard --logdir ./logs
logdir 인자는 TensorBoard가 출력할 수 있는 이벤트 파일들을 찾을 디렉터리를 가리키며, 디렉터리 구조에서 *tfevents.* 형태로 이루어진 파일을 재귀적으로 탐색하게 된다.
위 명령어를 실행해주면 터미널에 아래와 같이 나타난다. 제공하는 URL을 클릭하면 된다.
TensorFlow installation not found - running with reduced feature set.
NOTE: Using experimental fast data loading logic. To disable, pass
"--load_fast=false" and report issues on GitHub. More details:
https://github.com/tensorflow/tensorboard/issues/4784
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.8.0 at http://localhost:6006/ (Press CTRL+C to quit)
참고자료 1 : https://tutorials.pytorch.kr/recipes/recipes/tensorboard_with_pytorch.html
728x90
반응형