[Python] Visdom

2020. 1. 12. 17:38·Language/Python
반응형
10_3 Visdom

시각화를 위한 도구인 visdom 사용법을 간단히 정리했다.

설치환경 : windows10 , python3.7

 

설치

pip 명령어를 통해 설치할 수 있다.

pip install visom

 

서버 실행

설치를 완료한 다음 아래의 명령어를 실행한다.

xxxxxxxxxx
python -m visdom.server

https://i.imgur.com/1wh1eJ9.png

  • 위 링크로 접속한다.

https://i.imgur.com/MtCeWJY.png

  • 이런 페이지가 나온다.

 

사용법

xxxxxxxxxx
import visdom
vis = visdom.Visdom()
  • visdom 을 사용하기 위해 위처럼 선언한다.
  • 서버가 켜져 있어야 오류 없이 실행된다.

 

text

text를 통해 문자를 띄울 수 있다. 사용법은 아래와 같다.

xxxxxxxxxx
vis.text("Hello wolrd", env="main")
  • 위 코드를 실행하면 웹 페이지에 텍스트가 생긴 것을 볼 수 있다.

https://i.imgur.com/YHFfkos.png

 

image

​x
import torch
​
r = torch.randn(3, 200, 200) # 200x200크기의 임의 이미지 데이터 생성
vis.image(r) # 출력

https://i.imgur.com/TLvbkmM.png

 

images

xxxxxxxxxx
vis.images(torch.Tensor(3, 3, 28, 28))
  • 여러 이미지를 한번에 띄울수도있다.

 

Lineplot

  • 그래프를

  • 학습 진행하면서 loss를 그래프로 표현해서 확인하는 법

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

https://i.imgur.com/HH3Z3cu.png

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

https://i.imgur.com/0vRP1xK.png

  • 데이터가 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"
)

https://i.imgur.com/hJP2jXD.png

단일 창에서 여러 라인

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)

https://i.imgur.com/tWZgLDi.png

Line info

  • 그래프에 정보넣기

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

https://i.imgur.com/9Xlu1wy.png

축 이름 넣기

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

https://i.imgur.com/vt4cjNV.png

여러축

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

https://i.imgur.com/lfbjhiW.png

업데이트 함수

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

https://i.imgur.com/vb8q9Di.png

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

https://i.imgur.com/DHKXq69.png

 

여러개 띄울 수 있다.

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

https://i.imgur.com/FhUrvjd.png

 

참고 링크 https://github.com/facebookresearch/visdom

반응형
저작자표시 비영리 변경금지 (새창열림)
'Language/Python' 카테고리의 다른 글
  • [Python] Flask
  • [Python] 함수 인자
  • [Python] Pyenv
  • [Python] 가상환경 만들기
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Spring Framework (9)
        • Spring (5)
        • JPA (2)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Unreal Engine
    언리얼엔진4
    C++
    php
    자바
    pytorch
    MySQL
    memcached
    FPS
    map
    알고리즘
    프로그래머스
    redis
    딥러닝
    C
    클래스
    웹
    JavaScript
    게임 개발
    Python
    Unreal
    CPP
    select
    JS
    mscoco
    PS
    게임
    블루프린트
    NUXT
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[Python] Visdom
상단으로

티스토리툴바