TensorBoard チュートリアル: TensorFlow グラフの視覚化 [例]

TensorBoard とは何ですか?

テンソルボード グラフを視覚化し、モデルを理解、デバッグ、最適化するためのその他のツールに使用されるインターフェイスです。 これは、機械学習ワークフローの測定と視覚化を提供するツールです。 損失や精度、モデルグラフの視覚化、低次元空間でのプロジェクトの埋め込みなどのメトリクスを追跡するのに役立ちます。

Tensorboard を使用した TensorFlow グラフの視覚化の例

下の画像は、この TensorBoard チュートリアルで生成する TensorBoard グラフからのものです。 それはメインパネルです:

TensorFlow グラフの視覚化
TensorFlow グラフの視覚化

下の図から、TensorBoard グラフ視覚化のパネルを見ることができます。 パネルにはさまざまなタブが含まれており、モデルの実行時に追加する情報のレベルにリンクされています。

TensorBoard グラフ

TensorBoard グラフ
  • スカラー: モデルのトレーニング中にさまざまな役立つ情報を表示します
  • グラフ: モデルを表示します
  • ヒストグラム: 重みをヒストグラムで表示します
  • 販売:重量分布を表示します。
  • プロジェクター: 主成分分析と T-SNE アルゴリズムを表示します。 次元削減に使用される手法

この TensorBoard チュートリアルでは、単純な深層学習モデルをトレーニングします。 それがどのように機能するかについては、今後のチュートリアルで学習します。

グラフを見ると、モデルがどのように機能するかを理解できます。

  1. データをモデルにエンキューする: バッチ サイズに等しい量のデータをモデルにプッシュします。つまり、各反復後のデータ フィードの数です。
  2. データを Tensor にフィードする
  3. モデルを訓練する
  4. トレーニング中のバッチ数を表示します。 モデルをディスクに保存します。

Tensorboard を使用した TensorFlow グラフの視覚化の例

Tensorboard の基本的な考え方は、ニューラル ネットワークはブラック ボックスと呼ばれるものであり、このボックスの内部を検査するためのツールが必要であるということです。Tensorboard は、ニューラル ネットワークへの探究を開始するための懐中電灯であると想像できます。

これは、操作間の依存関係、重みの計算方法、損失関数の表示、その他の多くの有用な情報を理解するのに役立ちます。これらすべての情報をまとめると、デバッグしてモデルを改善する方法を見つけるための優れたツールが得られます。

TensorBoard グラフがどれほど役立つかを理解するには、以下の図を見てください。

TensorBoard グラフ
TensorBoard グラフ

ニューラルネットワークは、異なる「ニューロン」をどのように接続するか、そしてモデルが結果を予測できるようになるまでに何層必要かを決定します。アーキテクチャを定義したら、モデルをトレーニングするだけでなく、予測の精度を計算するための指標も必要です。この指標は、 損失関数。 目的は損失関数を最小化することです。言い換えれば、モデルのエラーが少なくなるということです。すべての機械学習アルゴリズムは、損失がより平坦な線に達するまで何度も計算を繰り返します。この損失関数を最小化するには、 学習率。 これは、モデルに学習させたい速度です。 学習率を高く設定しすぎると、モデルは何も学習する時間がなくなります。 左の写真がそれです。 線は上下に移動しています。これは、モデルが純粋な推測で結果を予測していることを意味します。 右側の図は、曲線が平坦になるまで損失が反復によって減少していることを示しています。これは、モデルが解決策を見つけたことを意味します。

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 user

TensorBoard のチュートリアル Windows ユーザー

この情報は、パイトーチ テンソルボード。

ログ イベントが書き込まれたので、Tensorboard を開くことができます。 Tensorboard Keras はポート 6006 で実行されます (Jupyter ポート8888で実行されます。MacOSユーザーの場合はターミナル、 Windows ユーザー。

MacOSユーザー向け

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

ノートブックはパス /Users/Guru99/tuto_TF に保存されます。

Windows users

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

ノートブックはパス C:\Users\Admin\Anaconda3 に保存されます。

Tensorboard を起動するには、このコードを使用できます

MacOSユーザー向け

tensorboard --logdir=./train/linreg

Windows users

tensorboard --logdir=.\train\linreg

Tensorboard は次の URL にあります: http://localhost:6006

次の場所にも配置できます。

TensorBoard を使用する

URL をコピーして、お気に入りのブラウザに貼り付けます。 これが表示されるはずです:

グラフの読み方については、専用のチュートリアルで学習することに注意してください。 深い学習.

TensorBoard を使用する

次のようなものが表示された場合:

TensorBoard を使用する

これは、Tensorboard がログ ファイルを見つけられないことを意味します。cd が正しいパスを指していることを確認するか、ログ イベントが作成されているかどうかを再確認してください。作成されていない場合は、コードを再実行してください。

TensorBoard を閉じたい場合は CTRL+C を押してください

ヒント: anaconda プロンプトで現在の作業ディレクトリを確認してください。

TensorBoard を使用する

ログ ファイルは C:\Users\Admin に作成される必要があります。

まとめ

TensorBoard はモデルを視覚化するのに最適なツールです。さらに、損失、精度、重みなど、トレーニング中に多くのメトリックが表示されます。

Tensorboard をアクティブにするには、ファイルのパスを設定する必要があります。

cd /Users/Guru99/tuto_TF

Tensorflow の環境をアクティブ化する

activate hello-tf

テンソルボードを起動する

tensorboard --logdir=.+ PATH