IT_World
[error] ModuleNotFoundError: No module named 'visdom' 본문
[error] ModuleNotFoundError: No module named 'visdom'
engine 2021. 5. 26. 14:50Operating 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 했더니 무사히 돌아간다.