딥러닝 모델을 학습하다 보면 다음과 같은 고민을 하게 됩니다.
- 현재 Loss가 얼마나 감소하고 있을까?
- 학습이 정상적으로 진행되고 있을까?
- 여러 실험 결과를 비교할 수 없을까?
- 모델 구조를 시각적으로 확인할 수 없을까?
이러한 문제를 해결하기 위해 많이 사용하는 도구가 바로 TensorBoard입니다.
이번 글에서는 TensorBoard의 개념부터 설치 방법, 그리고 가장 기본적인 사용 방법까지 알아보겠습니다.
TensorBoard란?
TensorBoard는 원래 TensorFlow에서 제공하는 시각화 도구이지만, 현재는 PyTorch에서도 널리 사용되고 있습니다.
학습 과정에서 발생하는 다양한 정보를 그래프로 시각화하여 보여주기 때문에 모델의 상태를 쉽게 확인할 수 있습니다.
TensorBoard를 사용하면 다음과 같은 정보를 확인할 수 있습니다.
- Loss 변화
- Accuracy 변화
- Learning Rate 변화
- 모델 구조(Graph)
- 이미지 데이터
- 히스토그램
- Embedding 시각화
TensorBoard를 사용하는 이유
예를 들어 학습 중 Loss를 print()로 출력한다고 가정해보겠습니다.
for epoch in range(10):
loss = train()
print(loss)
출력 결과
1.82
1.53
1.21
0.95
0.81
0.75
...
숫자만 보면 학습이 잘 되고 있는지 직관적으로 판단하기 어렵습니다.
TensorBoard를 사용하면 그래프 형태로 확인할 수 있기 때문에 학습 상태를 훨씬 쉽게 파악할 수 있습니다.
TensorBoard 기본 사용법
PyTorch에서는 SummaryWriter를 사용하여 로그 파일을 생성합니다.
from torch.utils.tensorboard import SummaryWriter
Writer 생성
writer = SummaryWriter()
실행하면 프로젝트 폴더 안에
runs/
폴더가 자동으로 생성됩니다.
Scalar 기록하기
가장 많이 사용하는 기능은 Scalar 기록입니다.
대표적으로
- Loss
- Accuracy
- Learning Rate
등을 저장합니다.
예제
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
for epoch in range(10):
loss = 10 / (epoch + 1)
writer.add_scalar(
tag='Loss',
scalar_value=loss,
global_step=epoch
)
writer.close()실행결과:

TensorBoard 실행하기
터미널에서 다음 명령어를 입력합니다.
tensorboard --logdir=runs
혹은 상대 경로나 절대 경로를 입력합니다.
tensorboard --logdir .\realpath\runs\
tensorboard --logdir C:\Users\PC\python_project\nlp\
실행 결과
TensorBoard 2.x at http://localhost:6006
브라우저에서
http://localhost:6006
접속하면 TensorBoard 화면을 볼 수 있습니다.
1. add_scalar() – 단일 값 기록하기
가장 많이 사용하는 기능입니다.
Loss, Accuracy, Learning Rate 등을 기록할 때 사용합니다.
예제 1 : 직선 그래프 그리기
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
x = range(100)<br><br>for i in x:
writer.add_scalar(
'y=2x',
i * 2,
i
)
writer.close()실행결과:

예제 2 : 학습 Loss 기록하기
실제 딥러닝 프로젝트에서 가장 많이 사용하는 형태입니다.
for epoch in range(100):
loss = train_loss
writer.add_scalar(
'Loss/train',
loss,
epoch
)
2. add_scalars() – 여러 개의 그래프 비교하기
실험 결과를 비교할 때 매우 유용합니다.
예를 들어 Sin, Cos, Tan 함수를 동시에 그려보겠습니다.
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
r = 5
for i in range(100):
writer.add_scalars(
'run_16h',
{
'xsinx': i*np.sin(i/r),
'xcosx': i*np.cos(i/r),
'tanx': np.tan(i/r)
},
i
)
writer.close()실행결과:

3. add_histogram() – 데이터 분포 확인하기
히스토그램은 가중치(Weight)나 데이터 분포를 분석할 때 사용됩니다.
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
for i in range(10):
x = np.random.random(1000)
writer.add_histogram(
'distribution centers',
x + i,
i
)
writer.close()실행결과:

딥러닝에서의 활용
가중치 분포 확인
for name, param in model.named_parameters():
writer.add_histogram(
name,
param,
epoch
)
확인 가능한 내용
- Weight 분포
- Bias 분포
- Gradient 분포
- 학습 중 Weight 변화
4. Train / Test 비교하기
실제 프로젝트에서 가장 많이 사용하는 예제입니다.
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
for n_iter in range(100):
writer.add_scalar(
'Loss/train',
np.random.random(),
n_iter
)
writer.add_scalar(
'Loss/test',
np.random.random(),
n_iter
)
writer.add_scalar(
'Accuracy/train',
np.random.random(),
n_iter
)
writer.add_scalar(
'Accuracy/test',
np.random.random(),
n_iter
)
writer.close()실행결과:


자주 사용하는 TensorBoard 기능
| 기능 | 메서드 |
|---|---|
| Loss 기록 | add_scalar() |
| Accuracy 기록 | add_scalar() |
| 여러 그래프 비교 | add_scalars() |
| 히스토그램 | add_histogram() |
| 이미지 저장 | add_image() |
| 모델 구조 표시 | add_graph() |
| 텍스트 저장 | add_text() |
TensorBoard 사용 시 주의사항
1. 반드시 close() 호출하기
writer.close()
호출하지 않으면 로그가 정상적으로 저장되지 않을 수 있습니다.
2. 실험마다 로그 분리하기
writer = SummaryWriter(
"runs/experiment_1"
)
writer = SummaryWriter(
"runs/experiment_2"
)
TensorBoard에서 여러 실험을 비교할 수 있습니다.
3. runs 폴더 정리하기
테스트를 반복하면 로그가 계속 누적됩니다.
필요시 runs 폴더함을 직접 삭제 후 다시 실행하는 것이 좋습니다.
마무리
TensorBoard는 PyTorch 학습 과정을 시각적으로 분석할 수 있는 가장 강력한 도구 중 하나입니다. PyTorch를 사용하여 CNN, RNN, LSTM, Transformer 모델을 학습한다면 TensorBoard는 거의 필수 도구라고 할 수 있습니다. 단순히 Loss를 출력하는 것보다 TensorBoard를 활용하여 학습 과정을 시각적으로 분석해 보시기 바랍니다.

