반응형
시각화를 위한 도구인 visdom 사용법을 간단히 정리했다.
설치환경 : windows10 , python3.7
설치
pip 명령어를 통해 설치할 수 있다.
pip install visom
서버 실행
설치를 완료한 다음 아래의 명령어를 실행한다.
xxxxxxxxxxpython -m visdom.server

- 위 링크로 접속한다.

- 이런 페이지가 나온다.
사용법
xxxxxxxxxximport visdomvis = visdom.Visdom()
visdom을 사용하기 위해 위처럼 선언한다.- 서버가 켜져 있어야 오류 없이 실행된다.
text
text를 통해 문자를 띄울 수 있다. 사용법은 아래와 같다.
xxxxxxxxxxvis.text("Hello wolrd", env="main")
- 위 코드를 실행하면 웹 페이지에 텍스트가 생긴 것을 볼 수 있다.

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

images
xxxxxxxxxxvis.images(torch.Tensor(3, 3, 28, 28))
- 여러 이미지를 한번에 띄울수도있다.
Lineplot
그래프를
학습 진행하면서 loss를 그래프로 표현해서 확인하는 법
xxxxxxxxxxY_data = torch.randn(5)plt = vis.line(Y=Y_data)

X축 없이 그린 그림이다. X축을 따로 지정하지 않으면 X 범위는 0~1로 설정한다.
xxxxxxxxxxY_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# updateX_append = torch.Tensor([6])Y_append = torch.randn(1)vis.line(X=X_append,Y=Y_append,win=plt, # 업데이트할 windowupdate="append")

단일 창에서 여러 라인
xxxxxxxxxxnum = 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 )
)

축 이름 넣기
xxxxxxxxxxplt = vis.line(Y=Y_data,X=X_data,opts=dict(title="Test Title",legend=["first line"],showlegend=True))

여러축
xxxxxxxxxxplt = 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))

업데이트 함수
xxxxxxxxxxdef 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) + iloss_tracker(plt, loss, torch.Tensor([i]))

MNIST 띄우기
xxxxxxxxxximport torchvision.datasets as dsetsimport torchvisionMNIST = 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")

여러개 띄울 수 있다.
xxxxxxxxxxdata_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

반응형