【Keras 입문(3)】TensorBoard로 보이기
TensorBoard를 포함하여 Google 공동체을 사용하고 있기 때문에 로컬 환경 준비조차하지 않습니다. Google Colaboratory에 대한 자세한 내용은 Google Colaboratory 개요 및 사용 절차 (TensorFlow와 GPU를 사용할 수 있음) 문서를 참조하십시오.
이하의 시리즈로 하고 있습니다.
<-이 기사
또, TensorBoard에 대해서는 이하의 기사를 참조해 주세요.
사용한 파이썬 라이브러리
Google 공동체에서 설치된 다음 라이브러리와 버전을 사용하고 있습니다. Keras는 TensorFlow에 통합된 것을 사용하기 때문에 순수한 Keras는 사용하지 않습니다. 파이썬은 3.6입니다.
파이썬 프로그램
전체 프로그램은 GitHub에 있습니다. 딥 러닝 모델에 대한 자세한 내용은 기사「【Keras 입문(1)】간단한 딥 러닝 모델 정의를 참조하십시오.
콜백 및 TensorBoard 로그 저장
Keras에서 TensorBoard 로그를 저장하려면 콜백이라는 기능을 사용합니다. 이것은 훈련 중에 호출할 수 있는 메커니즘입니다.
문서 「【Keras 입문(1)】간단한 딥 러닝 모델 정의」에서 사용한 fit 함수에 전달하여 사용할 수 있습니다.
model.fit(data, labels, epochs=300, validation_split=0.2, callbacks=li_cb)
경험하지 않지만 fit_generator 함수에도 사용할 수있는 것 같습니다.
fit 함수에 전달하는 li_cb라는 변수는 다음과 같이 정의됩니다. 배열을 사용하면 콜백에서 여러 기능을 사용할 수 있습니다. 이번에는 TensorBoard 함수을 사용하여 TensorBoard 로그를 저장합니다. 저장처는 타임스탬프를 부가한 폴더명으로 해 둡니다. 여러 번 실행하면 구별하기 쉽고 편리합니다.
from datetime import datetime
from tensorflow.keras.callbacks import Callback, TensorBoard
# TensorBoardのログ保存先(タイムスタンプを付けておくと見るときに便利)
logdir = "log/run-{}/".format(datetime.utcnow().strftime("%Y%m%d%H%M%S"))
# CallBackの指定
li_cb = []
li_cb.append(TensorBoard(log_dir=logdir, histogram_freq=1, write_graph=True, write_grads=True))
Google Colaboratory에서 TensorBoard 보기
TensorFlow2.0을 사용하면 Google Colaboratory에서 TensorBoard를 쉽게 사용할 수 있습니다. 입니다만, 2019년 5월 시점에서의 디폴트의 TensorFlow1.13.1에서는 사용할 수 없기 때문에 한 번 번거롭게 합니다.
ngrok이라는 공개 URL로 표시하는 서비스를 사용하여 TensorBoard를 공개합니다.
먼저 wget으로 가져와 unzip합니다.
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
tensorboard를 시작하고 ngrok에 게시합니다.
get_ipython().system_raw(
'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
.format(logdir)
)
# Tunnel port 6006 (TensorBoard assumed running)
get_ipython().system_raw('./ngrok http 6006 &')
cURL로 공개 URL 정보를 가져옵니다. URL을 열면 TensorBoard 화면입니다!
물론 로그를 다운로드하여 로컬 PC에서 볼 수도 있습니다.
# ここで表示されたURLを開く
! curl -s http://localhost:4040/api/tunnels | python3 -c \
"import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
Reference
이 문제에 관하여(【Keras 입문(3)】TensorBoard로 보이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/FukuharaYohei/items/fe73cdb63ee82a7ea318
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
model.fit(data, labels, epochs=300, validation_split=0.2, callbacks=li_cb)
from datetime import datetime
from tensorflow.keras.callbacks import Callback, TensorBoard
# TensorBoardのログ保存先(タイムスタンプを付けておくと見るときに便利)
logdir = "log/run-{}/".format(datetime.utcnow().strftime("%Y%m%d%H%M%S"))
# CallBackの指定
li_cb = []
li_cb.append(TensorBoard(log_dir=logdir, histogram_freq=1, write_graph=True, write_grads=True))
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
get_ipython().system_raw(
'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
.format(logdir)
)
# Tunnel port 6006 (TensorBoard assumed running)
get_ipython().system_raw('./ngrok http 6006 &')
# ここで表示されたURLを開く
! curl -s http://localhost:4040/api/tunnels | python3 -c \
"import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
Reference
이 문제에 관하여(【Keras 입문(3)】TensorBoard로 보이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/FukuharaYohei/items/fe73cdb63ee82a7ea318텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)