[TensorBoard] 여러 데이터를 한 그래프에서 보기

밤🌰·2022년 9월 16일
1
post-thumbnail

※ PyTorch의 TensorBoard만을 다룹니다.

TL;DR

from torch.utils.tensorboard import SummaryWriter

layout = {
    "Accuracy": {
        "Accuracy": ["Multiline", ["Accuracy/Train", "Accuracy/Test"]]
    }
}
writer = SummaryWriter()
writer.add_custom_scalars(layout)
writer.add_scalar("Accuracy/Train", VALUE, STEP)

TensorBoard CUSTOM SCALARS 탭에서 확인

사용하는 함수

SummaryWriter.add_custom_scalars(layout)

사용 예시

from torch.utils.tensorboard import SummaryWriter
import math

layout = {
    "ABCDE": {
        "loss": ["Multiline", ["loss/train", "loss/validation"]],
        "accuracy": ["Multiline", ["accuracy/train", "accuracy/validation"]],
    },
}

writer = SummaryWriter()
writer.add_custom_scalars(layout)


epochs = 10
batch_size = 50

for epoch in range(epochs):
    for index in range(batch_size):
        global_batch_index = epoch * batch_size + index

        train_loss = math.exp(-0.01 * global_batch_index)
        train_accuracy = 1 - math.exp(-0.01 * global_batch_index)

        writer.add_scalar("loss/train", train_loss, global_batch_index)
        writer.add_scalar("accuracy/train", train_accuracy, global_batch_index)

    validation_loss = train_loss + 0.1
    validation_accuracy = train_accuracy - 0.1

    writer.add_scalar("loss/validation", validation_loss, global_batch_index)
    writer.add_scalar("accuracy/validation", validation_accuracy, global_batch_index)

 writer.close()

설명

기존의 TensorBoard 사용시와 동일하게 SummaryWriter 인스턴스를 선언합니다.
writer.add_scalar() 호출 전에 writer.add_custom_scalars()를 사용해 차트 레이아웃을 정해줍니다.
차트 레이아웃이란 텐서보드에 표시될 스칼라 값을 표시하는 방법입니다.
위 코드에서 ABCDE는 카테고리 이름, lossaccuracy가 차트의 이름이며, loss/train, loss/validation, accuracy/train, accuracy/validation이 스칼라 이름입니다.

writer.add_custom_scalars(layout)을 통해 레이아웃을 지정해준 뒤, 기존과 같이 writer.add_scalar(scalar)를 사용해 차트에 스칼라를 넣어주면 됩니다.

layout에서 언급된 스칼라는 TensorBoard의 "CUSTOM SCALARS" 탭에서 확인할 수 있습니다.

파이토치 공식 문서에서 볼 수 있는 레이아웃 예시는 다음과 같습니다.

layout = {'Taiwan':{'twse':['Multiline',['twse/0050', 'twse/2330']]},
             'USA':{ 'dow':['Margin',   ['dow/aaa', 'dow/bbb', 'dow/ccc']],
                  'nasdaq':['Margin',   ['nasdaq/aaa', 'nasdaq/bbb', 'nasdaq/ccc']]}}

writer.add_custom_scalars(layout)
profile
안녕하세요, 메타 러닝을 공부하고 있습니다.

1개의 댓글

comment-user-thumbnail
2022년 9월 16일

잘봤습니다

답글 달기