2019년 1월 10일 목요일

tensorboard 사용법

0. 먼저 tensorflow가 깔려있어야 함.

ex)
conda create -n tb python=2.7
conda activate tb
conda install -c anaconda tensorflow
conda install tensorboardXdfdfdf

 

1. tensorboard를 그대로 활용하기(5분 사용법)

https://medium.com/@anthony_sarkis/tensorboard-quick-start-in-5-minutes-e3ec69f673af
위 링크에 잘 나와있다. 아래는 그것을 요약한 것이다.

a. 값을 알고 싶은 부분에 아래 코드를 삽입한다.
pred = tf.nn.softmax( ... )
tf.summary.histogram('pred', pred)

loss = ...
tf.summary.scalar('loss', loss)

b. tf.Session()에 writer를 정의하고, training loop에 merge 및 writing하는 코드를 삽입한다.
with tf.Session() as sess:
  train_writer = tf.summary.FileWriter('저장경로', sess.graph)

  for i in range(70000):
    merge = tf.summary.merge_all()
    summary, total_loss, ... = sess.run([merge, loss, ...], ...)
    train_writer.add_summary(summary, i)

c. 학습을 시작한 이후, terminal에 tensorboard --logdir 저장경로(혹은 그 상위 경로)에 입력 후,
주어지는 링크를 클릭하면 됨.

d. 이상하게 위의 코드를 사용하면 몇 iteration을 못 돌고, 시스템이 죽어(아마도 메모리문제로), 아래 코드를 대신 사용함.

2. tensorboardX를 활용하는 방법(3분)

https://github.com/lanpa/tensorboardX
tensorboardX는 tensorboard를 쉽게, 다른 framework에서도 사용하도록 만든 library로 위에 사용법이 나와있다. 아래는 그 사용법을 요약한 것이다.

a. pip install tensorboardX 로 다운받는다.

b. 아래 코드를 삽입한다(위의 코드에 대응하는 부분은 bold로 표시).
from tensorboardX import SummaryWriter
writer = SummaryWriter('저장경로디렉토리')
# '저장경로디렉토리' 대신 comment='태그'으로 하면 현재 날짜-태그 형식으로 저장함.

for i in range(70000):
  total_loss, ... = sess.run([loss, ...], ...)
  writer.add_histogram('pred', pred, i)
  writer.add_scalar('loss', total_loss, i)
  writer.add_image('img', img, i)


  ftr = ... [100, 784]
  writer.add_embedding(ftr, metadata=label, label_img=images.unsqueeze(1))

# scalar값은 아래와 같이 json파일로 저장도 가능.
writer.export_scalars_to_json(json파일경로)
writer.close()

c. 학습을 시작한 이후, terminal에 tensorboard --logdir 저장경로(혹은 그 상위 경로)에 입력 후,
주어지는 링크를 클릭하면 됨.

d. 이상하게 위의 코드를 사용하면 몇 iteration을 못 돌고, 시스템이 죽어(아마도 메모리문제로), 아래 코드를 대신 사용함.