Microsoft-cognitive-toolkit-monitoring-the-model

提供:Dev Guides
移動先:案内検索

CNTK-モデルの監視

この章では、CNTKでモデルを監視する方法を理解します。

前書き

前のセクションでは、NNモデルの検証を行いました。 しかし、トレーニング中にモデルを監視することも必要であり、可能ですか?

はい、すでに ProgressWriter クラスを使用してモデルを監視しており、これを行う方法は他にもたくさんあります。 方法を詳しく説明する前に、まずCNTKでのモニタリングの仕組みと、それを使用してNNモデルの問題を検出する方法を見てみましょう。

CNTKでのコールバック

実際、トレーニングと検証中に、CNTKを使用すると、APIのいくつかの場所でコールバックを指定できます。 まず、CNTKがコールバックを呼び出すタイミングを詳しく見てみましょう。

CNTKがコールバックを呼び出すとき?

CNTKは、トレーニングとテストのセットの瞬間にコールバックを呼び出します。

  • ミニバッチが完成しました。
  • トレーニング中に、データセットの完全なスイープが完了します。
  • テストのミニバッチが完了しました。
  • テスト中にデータセット全体の掃引が完了します。

コールバックの指定

CNTKの操作中に、APIのいくつかの場所でコールバックを指定できます。 たとえば、

損失関数でトレインを呼び出すとき?

ここで、損失関数でtrainを呼び出すと、次のように、callbacks引数を介して一連のコールバックを指定できます。

training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)

ミニバッチソースを使用する場合、または手動のミニバッチループを使用する場合

この場合、次のように*トレーナー*を作成しながら、監視目的のコールバックを指定できます。

from cntk.logging import ProgressPrinter
callbacks = [
   ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])

さまざまな監視ツール

さまざまな監視ツールについて調べてみましょう。

ProgressPrinter

このチュートリアルを読むと、最も使用されている監視ツールとして ProgressPrinter が見つかります。 ProgressPrinter 監視ツールの特徴のいくつかは、

*ProgressPrinter* クラスは、モデルを監視するための基本的なコンソールベースのロギングを実装します。 必要なディスクにログを記録できます。

分散型トレーニングシナリオでの作業中に特に役立ちます。

また、Pythonプログラムの出力を確認するためにコンソールにログインできないシナリオで作業しているときにも非常に役立ちます。

次のコードを使用して、* ProgressPrinter * −のインスタンスを作成できます

ProgressPrinter(0, log_to_file=’test.txt’)

前のセクションで見たような出力が得られます−

Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]

TensorBoard

ProgressPrinterを使用することの欠点の1つは、時間の経過に伴う損失とメトリックの進行がどのように困難であるかを適切に把握できないことです。 TensorBoardProgressWriterは、CNTKのProgressPrinterクラスの優れた代替手段です。

それを使用する前に、次のコマンドを使用して最初にインストールする必要があります-

pip install tensorboard

ここで、TensorBoardを使用するために、次のようにトレーニングコードで TensorBoardProgressWriter を設定する必要があります-

import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)
  • NN モデルのトレーニングが完了したら、 *TensorBoardProgressWriter インスタンスでcloseメソッドを呼び出すことをお勧めします。

次のコマンドを使用して、 TensorBoard ログデータを視覚化できます-

Tensorboard –logdir logs