시각화 visdom 간단 정리

Jonie Kwon·2022년 4월 3일
0
post-custom-banner

설치

!pip install visdom

임포트

시각화 된 이미지들은 localhost:8097 서버에서 확인 가능
import visdom
vis = visdom.Visdom()

이미지 출력

vis.image(torch.Tensor(3,3,28,28)	# 한 개
vis.images(torch.Tensor(3,3,28,28)	# 여러개(3)

모든 창 닫기

vis.close(env="main")

Line Plot

Y_data = torch.randn(5)
plt = vis.line(Y=Y_data) 

X축 을 지정하지 않을 경우 0~1사이 값으로 생성 됨

X_data = torch.Tensor([1,2,3,4,5])
plt = vis.line(Y=Y_data, X=X_data) 

Line update

Y_append = torch.randn(1)
X_append = torch.Tensor([6])

vis.line(Y=Y_append, X=X_append, win=plt, update="append") 

Y, X에 업데이트 할 값을 넣어주고 win에 업데이트 할 그래프(window)를 넣어줌.

Multi Line on a single window

num = torch.Tensor(list(range(0,10)))
num = num.view(-1,1)
num = torch.cat((num,num),dim=1)

plt = vis.line(Y=torch.randn(10,2), X = num)

shape를 맞추어서 넣어주면 되는 듯 하다.

Line info

딕셔너리 형태로 그래프 제목, 범례 등의 옵션 지정할 수 있음

plt = vis.line(Y=Y_data, X=X_data, opts = dict(title="Test", showlegend=True)

plt = vis.line(Y=Y_data, X=X_data, opts = dict(title="Test", legend = ["1번"], showlegend=True)

plt = vis.line(Y=torch.randn(10,2), X = num, opts = dict(title="Test", legend = ["1번", "2번"], showlegend=True)

make function for update line

def loss_tracker(loss_plot, loss_value, num):
	vis.line(X=num,
    Y=loss_value,
    win = loss_plot,
    update="append"
    )
plt = vis.line(Y=toch.Tensor(1).zero_())

for i in range(500):
	loss = torch.randn(1) + 1
    loss_tracker(plt, loss, torch.Tensor([i])

이외 자세한 사용법은 visdom 에서 확인

profile
메모하는 습관
post-custom-banner

0개의 댓글