ALL_ABOUT_TORCH
사용자 입장에서 파이토치 라이브러리를 사용하면서 필요한 부분에 대하여 포스팅 한 글 입니다.
Plot training loss with visdom
이번 시간에서 training 도중에 loss를 시각적으로 확인하는 방법 중 하나인
Visdom 사용법을 살펴보겠습니다.
1. 아나콘다 커멘드 창에서 visdom 을 설치해줍니다.
pip install visdom
2. 콘다 커멘드 창에서 visdom을 실행시켜 줍니다 .
visdom
Tip
만일 다른 포트 번호를 원한다면 2번에서 visdom 대신에 visdom -p 8099
이런식으로 다른 포트 번호를 입력해주시면 됩니다.
3. 소스코드 창에서 vis 객체를 만듭니다.
import visdom
vis = visdom.Visdom()
3번을 실행 후 웹브라우저에서 localhost:8097 로 접속이 가능합니다.
4. 원하는 값을 visdom 객체를 통해서 보내주시면 됩니다.
EPOCH = 3
for t in range(EPOCH): # EPOCH
for i, (sample, target) in enumerate(train_loader): #BATCH
sample = sample.view(sample.size()[0], -1)
y = model(sample)
loss = criterion(y, target)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if i % 1000 == 99:
print(t, loss.item())
#--------------- VISDOM
vis.line(X=[i], Y=[loss.data],
win="loss",
update="append",
name=f"epoch {t+1}",
opts=dict(showlegend=True))
#---------------------------------------------------
저는 batch에 대해서 Loss를 플롯하고 싶었으므로 Y=[loss.item()] 으로 코드를 작성하였습니다.
* loss.item()인 이유는 loss가 tensor이므로 JSON serializable하지 않아서 입니다.
* X, Y는 리스트로 값을 보내야 합니다.
* win 은 plot을 하는 figure를 나타냅니다.
* update 방식은 append으로 합니다.
* name은 선의 이름입니다. 이름이 다른 선은 한 윈도우 내에서 다른 선으로 그려집니다.
* option에서 legend를 보여지게 하였습니다.
5. 결론
여기서는 loss를 plot하므로 vis.line 을 사용하였습니다.
더 다양한 plot을 원하신다면 facebook의 visdom github를 참고하시면 좋습니다.
github.com/facebookresearch/visdom
파이토치 버전에 대해서 해당 코드가 제대로 작동하지 않을 수 있습니다.
APPENDIX에서 해당 코드가 돌아가는 버전을 적어놨습니다.
전체 코드는 GITHUB에 올려뒀습니다.
github.com/fxnnxc/all_about_torch/blob/main/train_with_visdom.ipynb
APPENDIX
계발환경
python 3.6.8
pytorch 1.7.0
numpy 1.19.2
visdom 0.1.8.9
'프로그래밍' 카테고리의 다른 글
Windows Terminal Preview에 Anaconda Prompt 추가하기 (0) | 2020.11.28 |
---|---|
torch에서 Tensorboard를 이용해서 loss plot 하는 방법 (1) | 2020.11.28 |
ALL_ABOUT_TORCH - 1 / Custom Data Training (0) | 2020.11.22 |
[오류] vscode 주피터 노트북 테마 해제 (0) | 2020.11.13 |
[파이썬 기초 9] - Operator[Sets, Dictionaries, Extended Assignment] (0) | 2020.09.30 |