Tensorflow2016. 11. 5. 17:00


Tensorflow 에서는 알고리즘이 학습하는 과정을 시각화 하기 위한 툴을 제공하고 있습니다.

바로 TensorBoard 라고 하는 데이터를 시각화해서 그래프로 보기 좋게 표현해주는 툴입니다.


<TensorFlow Mechanics 101 튜토리얼 예제>



튜토리얼 예제를 통해서 실행한 텐서보드 화면입니다. 이와 같이 학습하는 과정에서 발생하는 데이터를 로깅하고 그 데이터를 그래프로 볼 수 있어 아주 유용하게 사용됩니다.



텐서보드를 사용하기 위해서는 먼저 summary 객체를 정의해 주어야 합니다.


# Build the summary Tensor based on the TF collection of Summaries.
summary = tf.merge_all_summaries()


그런 후에 세션을 생성해 주고

해당 세션을 인자로 하는 summary_writer를 생성해줍니다. tf.train.SummaryWriter의 첫번째 인자는 데이터를 파일로 내리기 위한 directory 정보입니다.


# Create a session for running Ops on the Graph.
sess = tf.Session()

# Instantiate a SummaryWriter to output summaries and the Graph.
summary_writer = tf.train.SummaryWriter(FLAGS.train_dir, sess.graph)


이렇게 준비가 되었으면,

sess.run()을 통해서 세션에서 한번 실행을 해주고,

로깅을 남기고 싶은 데이터를 summary_writer.add_summary() 함수의 인자로 하여 추가해줍니다.

마지막으로 summary_writer.flush() 를 호출하면 실제 disk에 파일을 씁니다.


# Write the summaries and print an overview fairly often.
if step % 100 == 0:
# Print status to stdout.
print('Step %d: loss = %.2f (%.3f sec)' % (step, loss_value, duration))
# Update the events file.
summary_str = sess.run(summary, feed_dict=feed_dict)
summary_writer.add_summary(summary_str, step)
summary_writer.flush()


이렇게 하여 생성된 데이터 파일을 텐서보드를 통해서 Web에서 볼 수 있습니다.

서버 콘솔에서 아래와 같이 tensorboard 명령어를 통해서 로그 디렉토리를 지정하여 실행하면 웹서비스가 port 6006으로 구동이 됩니다.


$ tensorboard --logdir=.


방화벽에서 해당 포트를 open 하고 웹브라우저에서 http://server-ip:6006 로 접속을 하면 위와 같은 텐서보드 화면을 볼 수 있습니다.



텐서보드는 이런 데이터뿐만이 아니라 생성된 Graph도 확인이 가능합니다.
아래와 같이 시각화하여 보여주고 각 노드를 클릭하면 어떤 연산이 되는지등의 상세한 정보도 볼 수 있습니다.




Posted by 대소니

댓글을 달아 주세요