torch.utils.tensorboard

J·2021년 6월 10일
0

pytorch

목록 보기
9/23

1D1T(1Day 1Torch) 6일차!

학습을 진행하다보면 당연하게도 학습과정과 학습결과를 저장해서 보고 싶은 생각이 든다. python logging을 통해서도 가능하지만 좀 더 많은 기능을 제공하는 tensorboard에 대해서 알아보자.
Tensorboard를 이용하여 pytorch 모델과 metric을 기록할 수 있다. tensorboard에서 필요한 기능들은 pytorch model에 의해 지원된다.

Summary Writer class는 log data의 main entry이다.
많은 정보들이 한 실험에서 기록될 수 있다. UI가 어수선 해지는 것을 방지하고 더 나은 결과 클러스터링을 얻기 위해 log하는 정보의 이름에 hierachy를 포함한 이름을 지정하여 정보를 그룹화 할 수 있습니다.

torch.utils.tensorboard.writer.SummaryWriter()

Writes entries directly to event files in the log_dir to be consumed by TensorBoard.

The SummaryWriter class provides a high-level API to create an event file in a given directory and add summaries and events to it. The class updates the file contents asynchronously. This allows a training program to call methods to add data to the file directly from the training loop, without slowing down training.

entries를 tensorboard에서 사용할 log_dir 내부의 event file에 write한다. SummaryWriter class는 event file을 주어진 directory에 생성하기 위한 high-level API를 제공한다. 그리고 summary와 event도 추가해준다. 이 class는 file의 contents를 비동기적으로 업데이트한다. 이것은 training program이 training 과정에서 training을 느리게 하지 않고 파일에 데이터를 추가하는 method를 호출할 수 있게 한다.

  • Example
from torch.utils.tensorboard import SummaryWriter

# create a summary writer with automatically generated folder name.
writer = SummaryWriter()
# folder location: runs/May04_22-14-54_s-MacBook-Pro.local/

# create a summary writer using the specified folder name.
writer = SummaryWriter("my_experiment")
# folder location: my_experiment

# create a summary writer with comment appended.
writer = SummaryWriter(comment="LR_0.1_BATCH_16")
# folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/
  • log_dir (string) – Save directory location. Default is runs/CURRENT_DATETIME_HOSTNAME, which changes after each run. Use hierarchical folder structure to compare between runs easily. e.g. pass in ‘runs/exp1’, ‘runs/exp2’, etc. for each new experiment to compare across them.

comment (string) – Comment log_dir suffix appended to the default log_dir. If log_dir is assigned, this argument has no effect.

purge_step (int) – When logging crashes at step T+X and restarts at step T , any events whose global_step larger or equal to T will be purged and hidden from TensorBoard. Note that crashed and resumed experiments should have the same log_dir.

max_queue (int) – Size of the queue for pending events and summaries before one of the ‘add’ calls forces a flush to disk. Default is ten items.

flush_secs (int) – How often, in seconds, to flush the pending events and summaries to disk. Default is every two minutes.

filename_suffix (string) – Suffix added to all event filenames in the log_dir directory. More details on filename construction in tensorboard.summary.writer.event_file_writer.EventFileWriter.

torch.utils.tensorboard.add_scalar((tag, scalar_value, global_step=None, walltime=None))

공식 설명은 아래와 같다.

Add scalar data to summary.

scalar data를 summary에 추가한다.

  • tag(string) - Data Identifier
  • scalar_value (float or string/blobname) - Value to save
  • global_step (int) - Global step value to record
  • walltime (float) - Optional override default walltime(time.time() with seconds after epoch of event)

torch.utils.tensorboard.add_scalars(main_tag, tag_scalar_dict, global_step = None, walltime=None)

공식설명은 아래와 같다.

Adds many scalar data to summary.

scalar data 여러개를 summary에 추가한다.

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
r = 5
for i in range(100):
    writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r),
                                    'xcosx':i*np.cos(i/r),
                                    'tanx': np.tan(i/r)}, i)
writer.close()
# This call adds three values to the same scalar plot with the tag
  • main_tag (string) – The parent name for the tags

  • tag_scalar_dict (dict) – Key-value pair storing the tag and corresponding values

  • global_step (int) – Global step value to record

  • walltime (float) – Optional override default walltime (time.time()) seconds after epoch of event

위의 add_scalar와 거의 유사하지만 활용도가 높을 것으로 예상되어 따로 기록하였다.

Reference

  1. https://pytorch.org/docs/stable/tensorboard.html
profile
I'm interested in processing video&images with deeplearning and solving problem in our lives.

0개의 댓글