ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Tensorboard] 설치 및 간단한 사용법 with Pytorch
    공부하는 글른 2020. 8. 28. 17:52

    0. What is tensorboard?

    텐서보드는 딥러닝 학습 시 시각화를 돕는 도구로, tensorflow 뿐 아니라 pytorch로 구현된 model에도 적용이 가능한 유용한 도구이다. 

     

    Tensorboard에 관해서 Tensorflow 홈페이지에서 다양한 튜토리얼을 제공하고 있으니, 디테일한 정보와 활용에 대해서는 사이트를 참고하면 좋을듯 하다!

     

    1. tensorboardX 설치하기

    pytorch에서 tensorboard를 사용하기 위해서는 tensorboardX를 설치해야한다.

    텐서보드X는 아래와같이 pip로 간단히 설치할 수 있다. 

    pip install tensorboardX

    tensorflow를 설치해도 버전에 알맞게 tensorboard 설치된다고 하니, 기존에 tensorboard가 설치되어 있는지 확인 후에 설치하면 된다. 

     

    2. tensorboard 사용하기

    1) tensorbard import 하기 

    모델 학습 과정을 tensorboard에 출력할 변수를 학습 코드에 삽입해줘야 한다. 

    from tensorboardX import SummaryWriter
    summary = SummaryWriter()

    summary라는 변수가 출력을 돕는 변수가 된다. 

     

    2) add_scalar 함수 사용하기 

    텐서보드 페이지 상단에는 Scalar 탭과, distributions, histograms 탭을 각각 확인할 수 있는데,

    그 중 add_scalar와 add_scalars는 scalar 탭에서 출력할 변수를 설정하는 함수다. 

     

    하나의 변수에 대해서 출력하고 싶으면 add_scalar 함수를, 여러 변수를 한번에 띄우고 싶으면 add_scalars를 사용하면 된다. 

     

    아래와 같이 add_scalar('변수 이름', 변수, iteration)을 입력하여 설정할 수 있다. 

    summary.add_scalar('learning_rate', cur_lr, iteration)
    summary.add_scalar('total loss', total, iteration)
    summary.add_scalar('box loss', loss_labels[1], iteration)
    summary.add_scalar('classificatoin loss', loss_labels[3], iteration)
    summary.add_scalar('mask loss', loss_labels[5], iteration)
    summary.add_scalar('segmentation loss', loss_labels[7], iteration)
    summary.add_scalar('instance loss', loss_labels[9], iteration)

     

    3) add_histogram 함수 사용하기

    add_histogram은 모델의 각 parameter들이 적절히 특성을 갖고 학습되는지 확인 하도록 해주는 함수다. 

    for name, param in net.named_parameters():
    	summary.add_histogram(name, param.clone().cpu().data.numpy(), iteration)

    parameter를 출력하고 싶은 모델의 name과 param 변수들을 name_parameters() 함수로 불러와서, add_histogram 함수의 input으로 넣어준다. 이때, param 변수는 cpu로 가져와서 data를 추출한 이후 numpy로 타입 변환을 해줘야 한다. 

     

    나는 2)번의 add_scalar와 3)번의 add_histogram이 있는 for loop 전체를 아래의 if statement로 감싸서 넣었다. 

    if iteration%10 == 0 :

     

     

    3. tensorboard 실행하기

    2-1)에서처럼 SummaryWriter()를 선언하면 해당 코드가 있는 path에 runs라는 directory가 생성되고, 해당 directory 안에 log들이 저장된다. 

     

    runs가 있는 path로 이동해서 아래 명령어를 이용하여, tensorboard로 연결할 수 있다. 

    tensorboard --logdir=runs/

    명령어 실행 이후, http://server 주소:port number/ 를 통해 tensorboard로 접근이 가능하다. 

     

     

    * 원격 서버에서 tensorboard 실행하기

    원격 서버에서 학습 중인 모델의 학습 log를 tensorboard를 통해 로컬에서 확인할 수 있도록 하려면 아래와 같은 명령어로 실행해야햔다. 

    tensorboard --logdir=runs/ --host=0.0.0.0 --port=원격서버에서 로컬로 연결 가능한 port number

    이후 http://remote server 주소:port number/ 를 통해 tensorboard로 접근이 가능하다. 

     

     

    4. tensorboard 예시

    2-2)와 2-3)의 코드를 통해서는 아래와 같이 결과를 얻을 수 있다. 

    tensorboard로 모델 loss visualization 하기

     

    tensorboard로 모델 parameter visualization 하기

    댓글 1

    • 777천재777 2021.08.24 12:25 신고

      첨부한 사진 처럼 텐서보드 가 나오는데 왜 그런걸까요?
      아래 댓글의 사진처럼
      https://m.blog.naver.com/CommentList.naver?blogId=wpxkxmfpdls&logNo=221863379073

      서서히 올라가거나 서서히 내려가는 형태로 그래프가 그려져야 할 것 같다고 생각되는데요

Written by Geulleun