텐서보드 사용법

TensorBoard는 TensorFlow에 기록된 로그를 그래프로 시각화시켜서 보여주는 도구다.


1. TensorBoard 실행
tensorboard --logdir=/tmp/sample
루트(/) 폴더 밑의 tmp 폴더 밑의 sample 폴더에 기록된 로그를 보겠다,라는 명령.
logdir 뒤에는 로그가 기록된 폴더를 명시한다.

기록된 폴더는 소스 코드를 구동시킬 때 명시하게 되어 있다.
즉, 소스 코드를 구동하지 않으면 로그도 없으므로 볼 것도 없다.
다만 로그가 그냥 기록되는 것은 아니고 소스 코드에 직접 관련 코드를 넣어야 한다.

2. tensorboard 정체
앞에서 실행한 명령의 tensorboard는
파이썬 설치 폴더 아래의 tensorflow 폴더 밑에 있는 tensorboard.py 파일을 가리킨다.

맥에서 tensorboard.py 파일의 위치
/usr/local/lib/python3.5/site-packages/tensorflow/tensorboard/tensorboard.py

3. 로그 위치
소스 코드에서 로그를 기록하기 위한 코드이다.
writer = tf.train.SummaryWriter("/tmp/test_logs", session.graph)

소스 코드를 구동하면 "/tmp/test_logs" 폴더에 확장자가 local인 파일이 생성된다.
-rw-r--r--   1 applekoong  wheel  681  8  1 21:37 events.out.tfevents.1470055070.applekoong.local

파일 이름이 꽤 길고 복잡하다.
이 파일이 있어야 tensorboard에서 결과를 볼 수 있다.

4. 포트 번호
tensorboard 기본 포트번호는 6006이다. 필요에 따라 포트 번호를 바꿀 수 있다.
tensorboard --logdir=/tmp/sample --port=8008

tensorboard 명령을 실행할 때 port 옵션을 사용해서 포트 번호를 지정할 수 있다.
동시에 여러 개의 로그를 보고 싶을 때 사용할 수 있다.

5. 웹 브라우저
콘솔에서 명령을 입력했을 때, 출력된 메시지를 보면 ip 주소가 나온다.
웹 브라우저를 열고 해당 주소와 포트 번호를 입력하면 그래프를 볼 수 있다.

입력 주소에는 두 가지가 있다.
0.0.0.0:6006 또는 localhost:6006

6. tensorboard 종료
웹 브라우저는 단순히 로그를 시각화하는 역할만 한다.
웹 브라우저를 종료한다고 해서 tensorboard가 종료되는 것이 아니다.

tensorboard 명령을 입력하면 해당 콘솔은 블록(대기) 상태로 들어간다.
ctrl+c를 입력하면 tensorboard가 종료된다. 맥에서도 ctrl+c를 사용한다. cmd+c가 아니다.

7. 주의사항
tensorboard를 실행하면 콘솔 창에 알 수 없는 경고가 뜬다.
결론적으로 결과를 보는 데에는 지장이 없다. 구글링해도 나오지 않는다.
 

WARNING:tensorflow:IOError [Errno 2] No such file or directory:
    '/usr/local/lib/python3.5/site-packages/tensorflow/tensorboard/TAG'
    on path /usr/local/lib/python3.5/site-packages/tensorflow/tensorboard/TAG
WARNING:tensorflow:Unable to read TensorBoard tag

또 하나는 로그 폴더를 잘못 입력해도 문제가 발생하지 않는다.
다만 웹 브라우저에 결과가 나타나지 않을 뿐이다.
tensorboard 입장에서는 폴더가 없다고 해서 이상한 행동을 할 필요는 없다고 보는 듯..
처음에 폴더 지정이 어색해서 여러 번 실수를 했다.

로그 결과는 계속 누적된다.
이전 결과는 사라지지 않고 남아 있다. 그러나, 웹 브라우저에서는 최신의 결과만 볼 수 있다.
이전 결과를 볼 수는 있겠지만, 화면에서 예전 결과를 선택하는 방법은 찾지 못했다.

이전 로그가 있을 때 뜨는 경고 메시지.
WARNING:tensorflow:Found more than one graph event per run. Overwriting the graph with the newest event.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

8. 예제 1
tensorboard에 점 하나 찍는 예제
import tensorflow as tf

a = tf.constant(3.0)
b = tf.constant(5.0)
c = a * b

# tensorboard에 point라는 이름으로 표시됨
c_summary = tf.summary.scalar('point', c)
merged = tf.summary.merge_all()

with tf.Session() as sess:
    writer = tf.summary.FileWriter('./board/sample_1', sess.graph)

    result = sess.run([merged])
    sess.run(tf.global_variables_initializer())

    writer.add_summary(result[0])


9. 예제 2
두 개의 직선을 출력하는 예제. 김성훈 교수님께서 말씀하신 5단계를 순서대로 보여준다.
import tensorflow as tf

X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)

add = tf.add(X, Y)
mul = tf.multiply(X, Y)

# step 1: node 선택
add_hist = tf.summary.scalar('add_scalar', add)
mul_hist = tf.summary.scalar('mul_scalar', mul)

# step 2: summary 통합. 두 개의 코드 모두 동작.
merged = tf.summary.merge_all()
# merged = tf.summary.merge([add_hist, mul_hist])

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    # step 3: writer 생성
    writer = tf.summary.FileWriter('./board/sample_2', sess.graph)

    for step in range(100):
        # step 4: 노드 추가
        summary = sess.run(merged, feed_dict={X: step * 1.0, Y: 2.0})
        writer.add_summary(summary, step)

# step 5: 콘솔에서 명령 실행
# tensorboard --logdir=./board/sample_2
# 콘솔 폴더가 현재 폴더(.)가 아니라면, 절대 경로 지정
# tensorboard --logdir=~/PycharmProjects/test/board/sample_2



출처: http://pythonkim.tistory.com/39 [파이쿵]

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 87155
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 79367
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 96085
42 MySQL 데이터베이스 기초 file 졸리운_곰 2018.07.05 1926
41 MySQL 기본 사용법 및 예제 졸리운_곰 2018.07.05 1210
40 COUNT() and GROUP BY 졸리운_곰 2018.07.05 1156
39 한 행에 중복된 값을 겹치지않게 count 해오는법(distinct , group by) 졸리운_곰 2018.07.05 1069
38 MYSQL GROUP BY 후 ROW COUNT file 졸리운_곰 2018.07.05 1175
37 group by로 해서 묶은 그룹의 count의 총 수(총 row수) 뽑기 file 졸리운_곰 2018.07.05 773
36 MySQL - 일별통계, 주간통계, 월간통계 졸리운_곰 2018.07.05 3030
35 mysql select 한 값을 insert 하는 sql 졸리운_곰 2018.07.02 1312
34 Auditing your MySQL Data 졸리운_곰 2018.07.02 1011
33 How To: Use MySQL triggers to log table changes 졸리운_곰 2018.07.02 1102
32 MySQL - History Tables 이력관리 / 히스토리 테이블 졸리운_곰 2018.07.02 2058
31 MariaDB 10의 NoSQL 기능과 MySQL의 Json 관련 UDF 졸리운_곰 2018.06.22 1308
30 [MySQL] Select 결과 Update하는 SQL 작성 file 졸리운_곰 2018.06.20 2475
29 조건에 맞게 select 한 후 update 시키기 졸리운_곰 2018.06.20 1152
28 MySQL (select) UPDATE file 졸리운_곰 2018.06.20 1066
27 MySQL에서 중복 값 찾기 졸리운_곰 2018.06.15 963
26 mysql case문 사용하기 졸리운_곰 2018.06.14 929
25 [MySQL] UPDATE 시 에러코드 1175 처리 file 졸리운_곰 2018.05.30 824
24 MySQL 데이터형 및 크기 졸리운_곰 2018.05.13 1132
23 MySQL OR MariaDB에서 프로시저(Procedure)를 만들어보자. 졸리운_곰 2018.03.25 1166
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED