IT_World

[error] ModuleNotFoundError: No module named 'visdom' 본문

Artificial intelligence, AI/error

[error] ModuleNotFoundError: No module named 'visdom'

engine 2021. 5. 26. 14:50

Operating System: Ubuntu 18.04.4 LTS
Kernel: Linux 5.4.0-72-generic
Architecture: x86-64
개발 환경 : PyCharm

언어 : python

라이브러리 : pytorch

 

파이 토치를 사용하던 중 tensorboard는 사용하기 복잡해서 plot를 사용하려 찾던 중 visdom을 발견했다.

그리고 사용하려니 뜨는 에러
ModuleNotFoundError: No module named 'visdom'

pip install visdom

Visdom는 과학적 실험 지원에 중점을 두고 데이터 시각화를 원격으로 보여준다.

Broadcast visualizations of plots, images, and text 

설치 후 python -m visdom.server 를 입력하고 ctrl + http://localhost:8097 클릭하면 밑 창으로 접속된다. 

python -m visdom.server

http://localhost:8097/

작동이 잘 되는지 보기위해서 테스트 코드를 하나 만들어봤다.

Pycharm을 열고 example.py 파일을 하나 만들어준다.

import visdom
import numpy as np
vis = visdom.Visdom()
vis.text('Hello, world!')
vis.image(np.ones((3, 10, 10)))

exmple 파일이 있는 디렉토리(폴더)로 접속 후 

python example.py

실행하기. 

http://localhost:8097/ 주소를 새로고침 하거나 재접속하면 밑처럼 Hello, world! 가 출력되는 것을 볼 수 있다.

 

자세한 사용법은 깃허브를 참조하면 좋을 듯 하다.

참조 : https://github.com/fossasia/visdom

 

fossasia/visdom

A flexible tool for creating, organizing, and sharing visualizations of live, rich data. Supports Torch and Numpy. - fossasia/visdom

github.com


ModuleNotFoundError: No module named 'torchsummary'

pip install torchsummary

summary는 Keras에서 네트워크를 디버깅하는 동안 모델의 시각화를 볼 수 있는 깔끔한 API이다.
Pytorch에서 summary를 보기 위해서는 torchsummary를 이용해야 한다.

vgg16_Batch Normalization를 torchsummary 이용해서 출력해보자.

전체 코드

import torch
from torchvision import models
from torchsummary import summary

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
vgg = models.vgg16_bn().to(device)
summary(vgg, (3, 224, 224))

----------------------------------------------------------------
        Layer (type)               Output Shape         Param #
================================================================
            Conv2 d-1         [-1, 64, 224, 224]           1,792
       BatchNorm2d-2         [-1, 64, 224, 224]             128
              ReLU-3         [-1, 64, 224, 224]               0
            Conv2d-4         [-1, 64, 224, 224]          36,928
       BatchNorm2d-5         [-1, 64, 224, 224]             128
              ReLU-6         [-1, 64, 224, 224]               0
         MaxPool2d-7         [-1, 64, 112, 112]               0
            Conv2d-8        [-1, 128, 112, 112]          73,856
       BatchNorm2d-9        [-1, 128, 112, 112]             256
             ReLU-10        [-1, 128, 112, 112]               0
           Conv2d-11        [-1, 128, 112, 112]         147,584
      BatchNorm2d-12        [-1, 128, 112, 112]             256
             ReLU-13        [-1, 128, 112, 112]               0
        MaxPool2d-14          [-1, 128, 56, 56]               0
           Conv2d-15          [-1, 256, 56, 56]         295,168
      BatchNorm2d-16          [-1, 256, 56, 56]             512
             ReLU-17          [-1, 256, 56, 56]               0
           Conv2d-18          [-1, 256, 56, 56]         590,080
      BatchNorm2d-19          [-1, 256, 56, 56]             512
             ReLU-20          [-1, 256, 56, 56]               0
           Conv2d-21          [-1, 256, 56, 56]         590,080
      BatchNorm2d-22          [-1, 256, 56, 56]             512
             ReLU-23          [-1, 256, 56, 56]               0
        MaxPool2d-24          [-1, 256, 28, 28]               0
           Conv2d-25          [-1, 512, 28, 28]       1,180,160
      BatchNorm2d-26          [-1, 512, 28, 28]           1,024
             ReLU-27          [-1, 512, 28, 28]               0
           Conv2d-28          [-1, 512, 28, 28]       2,359,808
      BatchNorm2d-29          [-1, 512, 28, 28]           1,024
             ReLU-30          [-1, 512, 28, 28]               0
           Conv2d-31          [-1, 512, 28, 28]       2,359,808
      BatchNorm2d-32          [-1, 512, 28, 28]           1,024
             ReLU-33          [-1, 512, 28, 28]               0
        MaxPool2d-34          [-1, 512, 14, 14]               0
           Conv2d-35          [-1, 512, 14, 14]       2,359,808
      BatchNorm2d-36          [-1, 512, 14, 14]           1,024
             ReLU-37          [-1, 512, 14, 14]               0
           Conv2d-38          [-1, 512, 14, 14]       2,359,808
      BatchNorm2d-39          [-1, 512, 14, 14]           1,024
             ReLU-40          [-1, 512, 14, 14]               0
           Conv2d-41          [-1, 512, 14, 14]       2,359,808
      BatchNorm2d-42          [-1, 512, 14, 14]           1,024
             ReLU-43          [-1, 512, 14, 14]               0
        MaxPool2d-44            [-1, 512, 7, 7]               0
AdaptiveAvgPool2d-45            [-1, 512, 7, 7]               0
           Linear-46                 [-1, 4096]     102,764,544
             ReLU-47                 [-1, 4096]               0
          Dropout-48                 [-1, 4096]               0
           Linear-49                 [-1, 4096]      16,781,312
             ReLU-50                 [-1, 4096]               0
          Dropout-51                 [-1, 4096]               0
           Linear-52                 [-1, 1000]       4,097,000
================================================================
Total params: 138,365,992
Trainable params: 138,365,992
Non-trainable params: 0
----------------------------------------------------------------
Input size (MB): 0.57
Forward/backward pass size (MB): 322.14
Params size (MB): 527.82
Estimated Total Size (MB): 850.54
----------------------------------------------------------------

Process finished with exit code 0

 

출력 결과이다.

 


log_ratio = torch.log(torch.tensor(ratio))
RuntimeError: log_vml_cpu not implemented for 'Long'

arcface를 돌리는데 위와 같은 에러가 나서 multi gpu사용에 문제가 있나 하고 봤는데 다른 큰 문제는 아니고 환경문제였다.

torch가 1.7.0으로 돼있어서 1.6.0으로 downgrade 했더니 무사히 돌아간다.

Comments