반응형
시각화를 위한 도구인 visdom
사용법을 간단히 정리했다.
설치환경 : windows10
, python3.7
설치
pip
명령어를 통해 설치할 수 있다.
pip install visom
서버 실행
설치를 완료한 다음 아래의 명령어를 실행한다.
xxxxxxxxxx
python -m visdom.server
- 위 링크로 접속한다.
- 이런 페이지가 나온다.
사용법
xxxxxxxxxx
import visdom
vis = visdom.Visdom()
visdom
을 사용하기 위해 위처럼 선언한다.- 서버가 켜져 있어야 오류 없이 실행된다.
text
text
를 통해 문자를 띄울 수 있다. 사용법은 아래와 같다.
xxxxxxxxxx
vis.text("Hello wolrd", env="main")
- 위 코드를 실행하면 웹 페이지에 텍스트가 생긴 것을 볼 수 있다.
image
ximport torch
r = torch.randn(3, 200, 200) # 200x200크기의 임의 이미지 데이터 생성
vis.image(r) # 출력
images
xxxxxxxxxx
vis.images(torch.Tensor(3, 3, 28, 28))
- 여러 이미지를 한번에 띄울수도있다.
Lineplot
그래프를
학습 진행하면서 loss를 그래프로 표현해서 확인하는 법
xxxxxxxxxx
Y_data = torch.randn(5)
plt = vis.line(Y=Y_data)
X축 없이 그린 그림이다. X축을 따로 지정하지 않으면 X 범위는 0~1로 설정한다.
xxxxxxxxxx
Y_data = torch.randn(5)
X_data = torch.Tensor([1,2,3,4,5]) # X축 명시
plt = vis.line(X=X_data, Y=Y_data)
- 데이터가 X축에서 1 ~ 5의 범위안에서 표현된다.
line update
xxxxxxxxxx
# update
X_append = torch.Tensor([6])
Y_append = torch.randn(1)
vis.line(
X=X_append,
Y=Y_append,
win=plt, # 업데이트할 window
update="append"
)
단일 창에서 여러 라인
xxxxxxxxxx
num = torch.Tensor(list(range(0,10)))
print(num)
num = num.view(-1, 1)
num = torch.cat((num, num), dim=1)
print(num)
print(num.shape)
plt = vis.line(Y=torch.randn(10,2), X=num)
Line info
그래프에 정보넣기
plt = vis.line( Y=Y_data, X=X_data, opts=dict( title="Test Title", showlegend=True )
)
축 이름 넣기
xxxxxxxxxx
plt = vis.line(
Y=Y_data,
X=X_data,
opts=dict(
title="Test Title",
legend=["first line"],
showlegend=True
)
)
여러축
xxxxxxxxxx
plt = vis.line(
Y=torch.randn(10,2),
X=torch.Tensor(list(range(0,10))),
opts=dict(
title="Test Title",
legend=["first line", "second line"],
showlegend=True
)
)
업데이트 함수
xxxxxxxxxx
def loss_tracker(loss_plt, loss_value, num):
vis.line(
X=num,
Y=loss_value,
win=loss_plt,
update="append"
)
plt = vis.line(
Y=torch.Tensor(1).zero_()
)
for i in range(500):
loss = torch.randn(1) + i
loss_tracker(plt, loss, torch.Tensor([i]))
MNIST 띄우기
xxxxxxxxxx
import torchvision.datasets as dsets
import torchvision
MNIST = dsets.MNIST(
root="./MNIST_data",
train=True,
transform=torchvision.transforms.ToTensor(),
download=True
)
data = MNIST.__getitem__(0)
print(data[0].shape)
vis.images(data[0], env="main")
여러개 띄울 수 있다.
xxxxxxxxxx
data_loader = torch.utils.data.DataLoader(
dataset=MNIST,
batch_size=32,
shuffle=False
)
for num, value in enumerate(data_loader):
value = value[0]
print(value.shape)
vis.images(value)
break
반응형