TensorBoardチュートリアル:TensorFlowグラフの可視化
⚡ スマートサマリー
TensorBoardは、TensorFlowのトレーニング実行結果を視覚的に表示するフロントエンドであり、損失曲線、モデルグラフ、重みヒストグラム、埋め込みなどをプロットします。このチュートリアルでは、推定器を使用してイベントファイルを書き込み、ポート6006でダッシュボードを開きます。

TensorBoard とは何ですか?
TensorBoardは、グラフやその他のツールを視覚化してモデルを理解、デバッグ、最適化するためのインターフェースです。機械学習ワークフローの測定と視覚化を提供するツールです。 trac損失や精度などのk個の指標を用いて、モデルグラフを可視化し、埋め込み表現を低次元空間に投影します。
TensorBoardには以下のものが付属しています TensorFlow そして、トレーニングジョブがディスクに書き込むイベントファイルを読み込む、小型のローカルWebサーバーとして動作します。
TensorBoardを使用したTensorFlowグラフ可視化の例
以下の画像は、このチュートリアルで生成するTensorBoardグラフのメインパネルです。
下の図から、TensorBoard グラフ視覚化のパネルを見ることができます。 パネルにはさまざまなタブが含まれており、モデルの実行時に追加する情報のレベルにリンクされています。
- スカラー: モデルトレーニング中にさまざまな有用な情報を表示する
- グラフ: モデルを表示する
- ヒストグラム: ヒストグラムで重みを表示する
- ディストリビューション: 重みの分布を表示する
- プロジェクター: 主成分分析とT-SNEアルゴリズムを示します。次元削減に使用される手法です。
このTensorBoardチュートリアルでは、シンプルなモデルをトレーニングします。 深い学習 これはモデルであり、生成されるグラフは下から上に読み取られます。
グラフを見れば、このモデルの仕組みが理解できます。下のスクリーンショットにある番号付きのバッジは、以下の4つの段階を示しています。
- データをモデルにエンキューする: バッチ サイズに等しい量のデータをモデルにプッシュします。つまり、各反復後のデータ フィードの数です。
- データを Tensor にフィードする
- モデルを訓練する
- トレーニング中のバッチ数を表示します。 モデルをディスクに保存します。
TensorBoardの基本的な考え方は、ニューラルネットワークはブラックボックスのように振る舞うため、その内部を調べるためのツールが必要だという点にあります。TensorBoardは、ネットワークの内部を探るための懐中電灯のようなものだと考えてください。
これは、操作間の依存関係、重みの計算方法、損失関数の表示、その他の多くの有用な情報を理解するのに役立ちます。これらすべての情報をまとめると、デバッグしてモデルを改善する方法を見つけるための優れたツールが得られます。
TensorBoardグラフがどれほど便利かを知っていただくために、以下の2つの損失曲線をご覧ください。
ニューラルネットワークは、異なるニューロンをどのように接続するか、そしてモデルが結果を予測できるようになるまでに何層の層が必要かを決定します。アーキテクチャが定義されたら、モデルを訓練するだけでなく、予測の精度を測定する指標も訓練する必要があります。この指標は損失関数と呼ばれ、目標は損失関数を最小化することです。つまり、モデルのエラーを減らすということです。
どの学習アルゴリズムも、損失がより平坦な線になるまで計算を何度も繰り返します。損失を最小化するには、学習率、つまりモデルが学習する速度も必要です。学習率を高く設定しすぎると、モデルは何も学習する時間がなくなってしまいます。左側のグラフは、モデルが事実上推測しているため線が上下に動いている状態を示しています。右側のグラフは、反復回数を重ねるごとに損失が減少し、曲線が平坦になる様子を示しています。これは、モデルが解を見つけたことを意味します。
TensorBoardは、こうした指標を視覚化し、潜在的な問題点を明確にするのに最適なツールです。ニューラルネットワークは解決策を見つけるまでに数時間から数週間かかることがありますが、TensorBoardはジョブの実行中に指標を更新します。そのため、モデルが正しく学習しているかどうかを確認するために最後まで待つ必要はありません。TensorBoardを開いて学習の進捗状況を確認し、必要に応じて適切な変更を加えるだけで済みます。
TensorBoardの使い方
このセクションでは、ターミナルから TensorBoard を開く方法を学びます。 macOS コマンドラインから Windowsここではモデルよりもツールに重点が置かれているため、トレーニングコードは意図的に短く抑えられています。
まず、トレーニング中に使用するライブラリをインポートする必要があります。
## 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に設定されていることに注意してください。この値を高く変更すると、モデルは解を見つけることができません。上の図の左側で起こっているのはまさにこのことです。
この例では、数学的計算をラップする高レベル API である TensorFlow エスティメータを使用します。エスティメータは TensorFlow 1.x API に属するため、以下の 2 つのコードスニペットは 1.x インストール環境または以下の環境で実行されます。 tf.compat.v1 名前空間
ログファイルを作成するには、パスを指定する必要があります。これは引数を使用して行います。 model_dir.
以下の TensorBoard の例では、モデルを作業ディレクトリ内、つまりノートブックを保存する場所または Python ファイル。このパス内に、TensorFlow は train という名前のフォルダを作成し、その中に linreg という名前の子フォルダを作成します。
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>
TensorFlow 2では、同じ処理はKeras TensorBoardコールバックによって行われ、推定コードなしでグラフとエポックごとのメトリクスが書き込まれます。
logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])
実行が終了すると、ログディレクトリにはチェックポイントファイル、 graph.pbtxt ファイルと 1 つ以上の events.out.tfevents ファイル ― TensorBoard が読み込むものと全く同じもの。
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する macOS users
以下の Finder 表示は、作業ディレクトリ内に作成された新しい train/linreg フォルダを示しています。
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する Windows users
On Windows アドレスバーにハイライト表示されているように、model_dirに渡したパスの下に同じファイルが表示されます。
同じイベントファイル形式は以下によって生成されます。 PyTorchそのため、ダッシュボードはTensorFlowの実行結果に限定されません。
ログイベントが書き込まれたので、TensorBoard を開くことができます。TensorBoard はデフォルトでポート 6006 で動作します (Jupyter ポート8888を使用します。ターミナルを使用してください。 macOS またはAnacondaプロンプト Windows.
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する macOS users
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
ノートブックは /Users/ のパスに保存されていますGuru99/tuto_TF
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する Windows users
cd C:\Users\Admin\Anaconda3 activate hello-tf
ノートブックはパス C:\Users\Admin\Anaconda3 に保存されます。
TensorBoardを起動するには、そのディレクトリから以下のコマンドを実行してください。
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する macOS users
tensorboard --logdir=./train/linreg
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する Windows users
tensorboard --logdir=.\train\linreg
TensorBoardはhttp://localhost:6006で提供されます。
| フラグ | 制御するもの |
|---|---|
--logdir |
イベントファイルが格納されているディレクトリ。これは唯一必須のフラグです。 |
--port |
サービス提供に使用するポート番号。デフォルトは6006です。以前のセッションでそのポートが使用されている場合は、変更してください。 |
--bind_all |
すべてのネットワークインターフェイスでサービスを提供します。TensorBoard はデフォルトでは localhost にのみバインドされるため、リモート アクセスにはこのフラグが必要であり、と組み合わせることはできません。 --host. |
--reload_interval |
ログディレクトリが新しいデータを検出するために再スキャンされる頻度(秒単位)。 |
--logdir_spec |
複数のパスをカンマで区切って受け入れる従来のフォールバック機能。 --logdir そのフォームはサポートされなくなりました。 |
その tensorboard dev サブコマンドは動作しなくなりました。ホストされていた TensorBoard.dev サービスは 2024 年 1 月 1 日に停止しました。ローカルでの使用には影響はありません。
一部のマシンでは、コンソールにlocalhostではなくホスト名が表示されます。下のAnacondaプロンプトの例をご覧ください。どちらのアドレスを使用しても、同じダッシュボードが開きます。
お使いのブラウザにアドレスをコピー&ペーストしてください。下図のようなScalarsダッシュボードが表示されるはずです。
代わりに次のような表示が出た場合:
これは、TensorBoard がログファイルを見つけられないことを意味します。 cd 正しいパスに進むか、ログイベントが実際に作成されたかどうかを再確認してください。作成されていない場合は、トレーニングコードを再実行してください。
TensorBoardを閉じるには、ターミナルウィンドウでCtrl+Cを押してください。
ヒント:Anacondaのプロンプトで現在の作業ディレクトリを確認してください。
上記のスクリーンショットでは、プロンプトがC:\Users\Adminに表示されているので、ログファイルもそのフォルダ内に作成されるはずです。










