TensorBoard 튜토리얼: TensorFlow 그래프 시각화 [예제]

텐서보드란 무엇입니까?

텐서 보드 모델을 이해하고 디버깅하고 최적화하기 위해 그래프와 기타 도구를 시각화하는 데 사용되는 인터페이스입니다. 기계 학습 워크플로우에 대한 측정 및 시각화를 제공하는 도구입니다. 손실 및 정확성, 모델 그래프 시각화, 저차원 공간의 프로젝트 임베딩 등과 같은 측정항목을 추적하는 데 도움이 됩니다.

Tensorboard 예제를 사용한 TensorFlow 그래프 시각화

아래 이미지는 이 TensorBoard 튜토리얼에서 생성할 TensorBoard 그래프에서 가져온 것입니다. 메인 패널입니다:

TensorFlow 그래프 시각화
TensorFlow 그래프 시각화

아래 그림에서 TensorBoard 그래프 시각화 패널을 볼 수 있습니다. 패널에는 모델을 실행할 때 추가하는 정보 수준에 연결된 다양한 탭이 포함되어 있습니다.

텐서보드 그래프

텐서보드 그래프
  • 스칼라: 모델 학습 중에 다양한 유용한 정보를 표시합니다.
  • 그래프: 모델 표시
  • 히스토그램: 히스토그램으로 가중치 표시
  • 콘텐츠 배급: 체중 분포를 표시합니다.
  • 프로젝터: 주성분 분석 및 T-SNE 알고리즘을 보여줍니다. 차원 축소에 사용되는 기술

이 TensorBoard 튜토리얼에서는 간단한 딥 러닝 모델을 훈련하게 됩니다. 향후 튜토리얼에서 어떻게 작동하는지 배우게 될 것입니다.

그래프를 보면 모델이 어떻게 작동하는지 이해할 수 있습니다.

  1. 모델에 데이터를 대기열에 넣습니다. 배치 크기와 동일한 양의 데이터를 모델에 푸시합니다. 즉, 각 반복 후 데이터 피드 수
  2. Tensor에 데이터 공급
  3. 모델 훈련
  4. 훈련 중 배치 수를 표시합니다. 모델을 디스크에 저장합니다.

Tensorboard 예제를 사용한 TensorFlow 그래프 시각화

텐서보드의 기본 아이디어는 신경망이 블랙박스라고 알려진 무언가일 수 있고, 이 상자 안에 무엇이 있는지 검사할 도구가 필요하다는 것입니다. 텐서보드를 신경망에 뛰어드는 손전등으로 생각할 수 있습니다.

연산 간의 종속성, 가중치 계산 방법, 손실 함수 표시 및 기타 많은 유용한 정보를 이해하는 데 도움이 됩니다. 이 모든 정보를 하나로 모으면 디버깅하고 모델을 개선하는 방법을 찾을 수 있는 훌륭한 도구가 됩니다.

TensorBoard 그래프가 얼마나 유용한지 알아보려면 아래 그림을 살펴보세요.

텐서보드 그래프
텐서보드 그래프

신경망은 다양한 "뉴런"을 연결하는 방법과 모델이 결과를 예측하기 전에 몇 개의 레이어가 필요한지 결정합니다. 아키텍처를 정의한 후에는 모델을 훈련할 뿐만 아니라 예측의 정확도를 계산하기 위한 메트릭도 필요합니다. 이 메트릭을 손실 기능. 목표는 손실 함수를 최소화하는 것입니다. 다른 말로 하면, 모델이 더 적은 오류를 발생시킨다는 것을 의미합니다. 모든 머신 러닝 알고리즘은 손실이 더 평평한 선에 도달할 때까지 여러 번 계산을 반복합니다. 이 손실 함수를 최소화하려면 다음을 정의해야 합니다. 학습률. 모델이 학습하기를 원하는 속도입니다. 학습률을 너무 높게 설정하면 모델이 아무것도 학습할 시간이 없습니다. 왼쪽 그림의 경우입니다. 선이 위아래로 움직입니다. 이는 모델이 결과를 순수하게 추측하여 예측한다는 의미입니다. 오른쪽 그림은 곡선이 평평해질 때까지 반복을 통해 손실이 감소하는 것을 보여줍니다. 이는 모델이 솔루션을 찾았음을 의미합니다.

TensorBoard는 이러한 지표를 시각화하고 잠재적인 문제를 강조하는 데 좋은 도구입니다. 신경망은 해결책을 찾기까지 몇 시간에서 몇 주가 걸릴 수 있습니다. TensorBoard는 지표를 매우 자주 업데이트합니다. 이 경우 모델이 올바르게 학습하는지 확인하기 위해 끝까지 기다릴 필요가 없습니다. TensorBoard를 열어 학습이 어떻게 진행되고 있는지 확인하고 필요한 경우 적절한 변경을 할 수 있습니다.

텐서보드를 사용하는 방법?

이 튜토리얼에서는 MacOS용 터미널에서 TensorBoard를 여는 방법과 명령줄에서 TensorBoard를 여는 방법을 알아봅니다. Windows.

코드는 향후 튜토리얼에서 설명할 예정이며 여기서는 TensorBoard에 중점을 둡니다.

먼저, 훈련 중에 사용할 라이브러리를 가져와야 합니다.

## Import the library
import tensorflow as tf
import numpy as np

당신은 데이터를 만듭니다. 10000개의 행과 5개의 열로 구성된 배열입니다.

X_train = (np.random.sample((10000,5)))
y_train =  (np.random.sample((10000,1)))
X_train.shape

산출

(10000, 5)

아래 코드는 데이터를 변환하고 모델을 생성합니다.

학습률은 0.1입니다. 이 비율을 더 높은 값으로 변경하면 모델이 솔루션을 찾지 못합니다. 위 사진의 왼쪽 부분이 이런 일이 일어났습니다.

대부분의 기간 동안 TensorFlow 튜토리얼, TensorFlow 추정기를 사용합니다. 이것은 모든 수학적 계산을 포함하는 TensorFlow API입니다.

로그 파일을 생성하려면 경로를 지정해야 합니다. 이는 model_dir 인수를 사용하여 수행됩니다.

아래 TensorBoard 예제에서는 모델을 작업 디렉터리, 즉 노트북이나 Python 파일을 저장하는 디렉터리에 저장합니다. 이 경로 내에서 TensorFlow는 하위 폴더 이름이 linreg인 train이라는 폴더를 생성합니다.

feature_columns = [
      tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file    
     model_dir='train/linreg',    
     hidden_units=[500, 300],    
     optimizer=tf.train.ProximalAdagradOptimizer(      
          learning_rate=0.1,      
          l1_regularization_strength=0.001    
      )
)

산출

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}

이 TensorFlow 시각화 그래프 예시의 마지막 단계는 모델을 학습시키는 것입니다. 훈련 중에 TensorFlow는 모델 디렉터리에 정보를 기록합니다.

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(    
     x={"x": X_train},    
     y=y_train, shuffle=False,num_epochs=None)
DNN_reg.train(train_input,steps=3000)

산출

INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt.
INFO:tensorflow:loss = 40.060104, step = 1
INFO:tensorflow:global_step/sec: 197.061
INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec)
INFO:tensorflow:global_step/sec: 172.487
INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec)
INFO:tensorflow:global_step/sec: 193.295
INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec)
INFO:tensorflow:global_step/sec: 175.378
INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec)
INFO:tensorflow:global_step/sec: 209.737
INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec)
INFO:tensorflow:global_step/sec: 171.646
INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec)
INFO:tensorflow:global_step/sec: 192.269
INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec)
INFO:tensorflow:global_step/sec: 198.264
INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec)
INFO:tensorflow:global_step/sec: 226.842
INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec)
INFO:tensorflow:global_step/sec: 152.929
INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec)
INFO:tensorflow:global_step/sec: 166.745
INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec)
INFO:tensorflow:global_step/sec: 161.854
INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec)
INFO:tensorflow:global_step/sec: 179.074
INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec)
INFO:tensorflow:global_step/sec: 202.776
INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec)
INFO:tensorflow:global_step/sec: 144.161
INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec)
INFO:tensorflow:global_step/sec: 154.144
INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec)
INFO:tensorflow:global_step/sec: 151.094
INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec)
INFO:tensorflow:global_step/sec: 193.644
INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec)
INFO:tensorflow:global_step/sec: 189.707
INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec)
INFO:tensorflow:global_step/sec: 176.423
INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec)
INFO:tensorflow:global_step/sec: 213.066
INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec)
INFO:tensorflow:global_step/sec: 220.975
INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec)
INFO:tensorflow:global_step/sec: 219.289
INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec)
INFO:tensorflow:global_step/sec: 215.123
INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec)
INFO:tensorflow:global_step/sec: 175.65
INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec)
INFO:tensorflow:global_step/sec: 206.962
INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec)
INFO:tensorflow:global_step/sec: 229.627
INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec)
INFO:tensorflow:global_step/sec: 195.792
INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec)
INFO:tensorflow:global_step/sec: 176.803
INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec)
INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt.
INFO:tensorflow:Loss for final step: 10.73032.

<tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>

MacOS 사용자의 경우

MacOS 사용자를 위한 TensorBoard 튜토리얼

럭셔리 Windows 사용자

텐서보드 튜토리얼 Windows 사용자

이 정보는 다음에서 볼 수 있습니다.파이 토치 텐서보드.

이제 로그 이벤트가 작성되었으므로 Tensorboard를 열 수 있습니다. Tensorboard Keras는 포트 6006(Jupyter 포트 8888에서 실행됩니다). MacOs 사용자의 경우 Terminal을 사용하거나 Anaconda 프롬프트를 사용할 수 있습니다. Windows 사용자.

MacOS 사용자의 경우

# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!

노트북은 /Users/Guru99/tuto_TF 경로에 저장됩니다.

럭셔리 Windows 사용자

cd C:\Users\Admin\Anaconda3
activate hello-tf

노트북은 C:\Users\Admin\Anaconda3 경로에 저장됩니다.

Tensorboard를 실행하려면 다음 코드를 사용하세요.

MacOS 사용자의 경우

tensorboard --logdir=./train/linreg

럭셔리 Windows 사용자

tensorboard --logdir=.\train\linreg

Tensorboard는 다음 URL에 있습니다: http://localhost:6006

다음 위치에도 있을 수 있습니다.

텐서보드 사용

즐겨찾는 브라우저에 URL을 복사하여 붙여넣으세요. 당신은 이것을보아야합니다 :

그래프를 읽는 방법은 전용 튜토리얼에서 배울 것입니다. 깊은 학습.

텐서보드 사용

다음과 같은 내용이 표시되면:

텐서보드 사용

Tensorboard가 로그 파일을 찾을 수 없다는 뜻입니다. cd를 올바른 경로로 지정하거나 로그 이벤트가 생성되었는지 다시 한 번 확인하세요. 그렇지 않은 경우 코드를 다시 실행하세요.

TensorBoard를 닫으려면 Ctrl+C를 누르세요.

유용한 정보: 현재 작업 디렉토리에 대한 아나콘다 프롬프트를 확인하세요.

텐서보드 사용

로그 파일은 C:\Users\Admin에 생성되어야 합니다.

요약

TensorBoard는 모델을 시각화하는 데 좋은 도구입니다. 게다가 손실, 정확도 또는 가중치와 같은 많은 지표가 훈련 중에 표시됩니다.

Tensorboard를 활성화하려면 파일 경로를 설정해야 합니다.

cd /Users/Guru99/tuto_TF

Tensorflow 환경 활성화

activate hello-tf

텐서보드 실행

tensorboard --logdir=.+ PATH