텐서보드 사용법

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 87177
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 79392
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 96113
22 Docker에서 SQL Server 컨테이너 이미지 구성 file 졸리운_곰 2020.01.23 1558
21 MSSQL 설치형 한글 환경으로 변경 file 졸리운_곰 2020.01.23 2892
20 PRIMARY KEY 와 FOREIGN KEY 를 전부 뽑아주는 쿼리 졸리운_곰 2018.12.16 1777
19 [MSSQL] CASE 문 . 조건에 따라 값 정하기 ! CASE WHEN THEN 졸리운_곰 2018.07.24 1576
18 Track Data Changes (SQL Server) file 졸리운_곰 2018.07.02 1310
17 Docker가 있는 SQL Server 2017 컨테이너 이미지를 실행 하는 빠른 시작 file 졸리운_곰 2018.06.26 1058
16 [MSSQL] Management Studio 이용해 데이터베이스 생성하기 file 졸리운_곰 2018.06.17 1288
15 [MSSQL - GROUP BY HAVING 을 이용한 중복 데이타 체크] file 졸리운_곰 2018.06.15 1288
14 [SQL] select 한 결과로 update 처리, SQL한문장, How to UPDATE from SELECT in SQL Server 졸리운_곰 2018.01.22 1477
13 UNION으로 결과 집합 조합 졸리운_곰 2017.08.27 1352
12 uniqueidentifier(Transact-SQL) file 가을의곰 2017.06.10 1757
11 하위 쿼리를 사용하여 다른 쿼리 또는 식에 쿼리 중첩 [MS-ACCESS : ms offce suit] 가을의곰 2017.06.10 1643
10 [MS-SQL] 테이블명, 컬럼명 검색 졸리운_곰 2017.04.17 1948
9 DB의 모든 테이블에서 데이터 검색 졸리운_곰 2017.04.17 1719
8 Microsoft SQL Server DBA 가이드-DBA라면 이정도는 알아야한다!!! file 졸리운_곰 2017.01.15 1307
7 SQL Server DBA 가이드 file 졸리운_곰 2017.01.15 1690
6 IDENTITY_INSERT가 OFF로 설정되면 ‘테이블명’ 테이블의 ID 열에 명시적 값을 삽입할 수 없습니다 file 졸리운_곰 2017.01.15 1513
5 MS SQL 서버에서 자동증가, autoincrement 처리 file 졸리운_곰 2017.01.15 1785
4 MS SQL 서버의 날짜, 시간 => 문자열 변환 포멧 설명 졸리운_곰 2017.01.15 1220
3 MS SQL 서버 코딩 표준 가이드 file 졸리운_곰 2017.01.14 1656
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED