본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. Deep Learning

[PyTorch로 시작하는 딥러닝 기초] Lab-10-3 visdom

by WE DONE IT 2020. 3. 8.

edwith의 [파이토치로 시작하는 딥러닝 기초] Lab-10-3 visdom 강의를 정리했습니다. 잘못된 부분이 있으면 말씀해 주세요!

 

[LECTURE] Lab-10-3 visdom : edwith

학습목표 Visdom 사용 방법을 알아본다.  핵심키워드 Visdom  CNN - tkddyd

www.edwith.org


이번 강의에서는 Visdom 사용 방법을 익히고 MNIST-CNN의 loss graph를 그리는 것까지 적용할 예정입니다.

 

Visdom

Visdom은 라이브 데이터를 풍부하게 시각화 해주는 시각화 도구입니다.  연구원과 개발자가 원격 서버에서 과학 실험을 지속적으로 할 수 있도록 도와주며, 브라우저에서 실행되며 다른 사람과 쉽게 공유할 수 있습니다.


Visdom 설치


pip install visdom # Visdom 설치
python -m visdom.server # 서버 실행

설치 후, http://localhost:8097 에 접속하면 visdom 페이지로 이동하실 수 있습니다. 

Visdom 사용법


import visdom
vis = visdom.Visdom() # 서버가 꺼져있으며 오류나기 때문에 반드시 실행되어야 함

Visdom 텍스트 및 이미지 불러오기


# Text
vis.text("Hello, world!",env="main")

# Image
a=torch.randn(3,200,200)
vis.image(a)

# Images
vis.images(torch.Tensor(3,3,28,28)) 

Visdom에서 텍스트와 이미지 불러오기

MNIST 이미지 


### MNIST 이미지 불러오기 ###
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")

### MNIST 이미지 여러 개 띄우기 ###
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

 

Lineplot

Lineplot 그리기

학습을 진행하면서 loss value 값을 확인할 수 있다. 


### Linde Plot ###
Y_data = torch.randn(5)
plt = vis.line (Y=Y_data)
# X값을 선언하지 않으면 0~1 사이의 값만 불러오게 됨

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

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

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

### multiple Line on single windows ###
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)

Line에 정보 추가하기


### 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))

그래프에 제목(Test)과 라인별 라벨(1번, 2번) 정보를 추가할 수 있다.

 

 


Visdom에 대한 자세한 설명은 Facebook AI 사이트에서 확인할 수 있습니다.

 

Visdom

Visdom is a visualization tool that generates rich visualizations of live data to help researchers and developers stay on top of their scientific experiments that are run on remote servers.

ai.facebook.com

 

댓글0