다운로드
작성자: admin 작성일시: 2019-06-29 15:54:51 조회수: 265 다운로드: 25
카테고리: 기타 태그목록:

3.5 텐서보드

TensorFlow는 모형 내부와 결과를 모니터링 할 수 있는 텐서보드(TensorBoard) 라는 웹서버를 제공한다.

텐서보드 웹서버는 포트 6006을 사용하므로 만약 도커를 사용하는 경우에는 다음과 같이 포트를 열고 실행해야 한다.

docker run --name rpython -it -p 8888:8888 -p 6006:6006 datascienceschool/rpython

텐서보드 용 로그 생성

TensorFlow 처리 과정에서 로그 파일을 만들면 추후 텐서보드 등의 프로그램에서 읽어서 웹 화면에 나타낼 뿐이다. 따라서 계산 코드에서 로그 생성을 위한 코드를 추가해 주어야 한다.

로그 코드는 다음과 같은 순서로 추가한다.

  1. summary.scalar(저장하려는 값이 스칼라 값일 때) 명령이나 summary.histogram(저장하려는 값이 다차원 값일 때) 명령으로 개별 변수 기록용 데이터 생성한다.
  2. summary.merge_all 명령으로 개별 변수 기록용 데이터를 하나로 합침. 일부만 합치고 싶다면 summary.merge()함수의 입력값으로 합치고 싶은 개별 변수 기록용 데이터를 리스트 형태로 입력하면된다.
  3. 세션 생성후 tf.summary.FileWriter 명령으로 기록용 객체 생성(다음 예제의 writer). 이 때 입력값으로 기록할 디렉토리를 설정한다.
  4. sess.run 명령으로 합쳐진 변수 기록용 데이터(다음 예제의 merged)를 실행하면 기록.
  5. 기록용 객체의 add_summary 명령으로 실행시킨 변수 기록용 데이터를 실제 파일에 쓰기.

방금 전 구현한 퍼셉트론 예제를 텐서보드용 로그를 생성하면서 실행한다. 여기에서는 /home/dockeruser/logs/라는 디렉토리에 로그를 저장한다. 기존의 로그 파일이 존재한다면 실행하기 전에 과거 로그를 삭제한다.

In [56]:
!rm -rf /home/dockeruser/logs/*
In [57]:
w_summary = tf.summary.histogram("w", w)
b_summary = tf.summary.scalar("b", b)
z_summary = tf.summary.histogram("z", z)
cost_summary = tf.summary.scalar("cost", cost)
merged = tf.summary.merge_all()

init = tf.global_variables_initializer()
with tf.Session() as sess:
    writer = tf.summary.FileWriter("/home/dockeruser/logs", sess.graph)
    sess.run(init)
    for i in range(200):
        if i % 10 == 0:
            _, cost_, summary = sess.run([train, cost, merged])
            print("{:4d} : {:.5f} ".format(i, cost_))
        else:
            _, summary = sess.run([train, merged])
        writer.add_summary(summary, i)
    y_pred = sess.run(tf.sign(z))
   0 : 0.27560 
  10 : 0.18108 
  20 : 0.08655 
  30 : 0.03559 
  40 : 0.03233 
  50 : 0.02908 
  60 : 0.02584 
  70 : 0.02259 
  80 : 0.01934 
  90 : 0.01609 
 100 : 0.01285 
 110 : 0.00963 
 120 : 0.00648 
 130 : 0.00353 
 140 : 0.00303 
 150 : 0.00316 
 160 : 0.00179 
 170 : 0.00223 
 180 : 0.00156 
 190 : 0.00036 
In [58]:
from sklearn.metrics import confusion_matrix

confusion_matrix(y_data, y_pred)
Out:
array([[49,  1],
       [ 9, 41]])

텐서보드 가동

텐서보드를 가동하기 위해서는 콘솔에서 다음과 같이 ip 주소와 로그 디렉토리를 설정하여 실행한다.

$ tensorboard --host=0.0.0.0 --logdir=/home/dockeruser/logs

위와 같이 실행한 다음에는 다음 주소로 연결하면 텐서보드 화면을 볼 수 있다.

도커 환경을 사용하는 경우에는

그림 54.8: 텐서보드 실행 화면

텐서보드는 정의한 그래프를 시각화해주는 기능도 있다. 상단 메뉴의 "GRAPHS"를 클릭하면 다음처럼 우리가 정의한 모형의 그래프 구조를 시각화하여 확인 할 수 있다.

그림 54.9: 텐서보드의 그래프 시각화 화면

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!