Monitor

Monitor API は、ニューラルネットワークの学習の進行状況を記録するための helper を提供します。

class nnabla.monitor.Monitor(save_path)[ソース]

このクラスは、ログの出力ディレクトリを設定するために作成されます。作成された nnabla.monitor.Monitor インスタンスは、以下の Monitor のクラスに渡されます。

Monitor のリスト

class nnabla.monitor.MonitorSeries(name, monitor=None, interval=1, verbose=True)[ソース]

学習中の様々な値を記録します。

値は画面に表示されるほか、ファイル <name>-series.txt に出力されます。

例 :

mons = MonitorSeries('mon', interval=2)
for i in range(10):
    mons.add(i, i * 2)
パラメータ:
  • name (str) -- monitor の名前。画面に表示されるログの中で使用される他、出力される .txt ファイルの名前の一部としても使われます。

  • monitor (Monitor) -- Monitor クラスのインスタンス。

  • interval (int) -- 出力を表示する間隔。 .add() によって追加された値は、その間隔内で平均されます。

  • verbose (bool) -- 画面へ出力を表示するか選択できます。

add(index, value)[ソース]

モニタに値を追加し、ログとして記録します。

パラメータ:
  • index (int) -- 値のインデックス。通常は現在のイテレーションなど。

  • value (float) -- 記録する値。

class nnabla.monitor.MonitorTimeElapsed(name, monitor=None, interval=100, verbose=True)[ソース]

経過時間を記録します。

値は画面に表示されるほか、ファイル <name>-timer.txt に出力されます。

例 :

import time
mont = MonitorTimeElapsed("time", interval=2)
for i in range(10):
    time.sleep(1)
    mont.add(i)
パラメータ:
  • name (str) -- monitor の名前。画面に表示されるログの中で使用される他、出力される .txt ファイルの名前の一部としても使われます。

  • monitor (Monitor) -- Monitor クラスのインスタンス。

  • interval (int) -- 出力を表示する間隔。経過時間はその間隔内で計算されます。

  • verbose (bool) -- 画面へ出力を表示するか選択できます。

add(index)[ソース]

以前にこのメソッドが呼び出された時点もしくはこのオブジェクトが作成された時点から、次にこのメソッドが呼び出されるまでの経過時間を計算します。

パラメータ:

index (int) -- 表示、そしてインターバルを取得するために使用されるインデックス。

class nnabla.monitor.MonitorImage(name, monitor, interval=1000, verbose=True, num_images=16, normalize_method=None)[ソース]

画像を保存します。

この .add() メソッドは (N,..., C, H, W) 配列を入力として取り、 [H, W, :min(3, C)] の形式で num_images 枚の画像に変換したのち、 monitor で指定したフォルダへ保存します。

値は画面に表示されるほか、ファイル <name>/{iter}-{image index}.png に出力されます 。

例 :

import numpy as np
m = Monitor('tmp.monitor')
mi = MonitorImage('noise', m, interval=2, num_images=2)
x = np.random.randn(10, 3, 8, 8)
for i in range(10):
    mi.add(i, x)
パラメータ:
  • name (str) -- monitor の名前。画面に表示されるログの中で使用される他、出力される .txt ファイルの名前の一部としても使われます。

  • monitor (Monitor) -- Monitor クラスのインスタンス。

  • interval (int) -- 出力を表示する間隔。

  • num_images (int) -- 各イテレーションで保存される画像の数。

  • normalize_method (function) -- 出力する画像に適用する正規化関数を指定します。この関数はNCHW形式の画像のミニバッチを numpy.ndarray として受け取り、入力を [0、1] の範囲にマッピングするものである必要があります。デフォルトでは、画像に対して min-max 正規化を行う関数が用いられます。

add(index, var)[ソース]

画像のミニバッチを monitor に追加します。

パラメータ:
  • index (int) -- 値のインデックス。通常は現在のイテレーションなど。

  • var (Variable, NdArray, or ndarray) -- (N, ..., C, H, W) 形式の画像のミニバッチ 。C == 2 の場合、ブルーチャネルが追加されます。C > 3 の場合、配列がスライスされ、C > 3 部分は無視されます。

class nnabla.monitor.MonitorImageTile(name, monitor, interval=1000, verbose=True, num_images=16, normalize_method=None)[ソース]

複数枚の画像をタイルしてまとめた画像を保存します。

この .add() メソッドは (N,..., C, H, W) 配列を入力として受け取り、(H, W, :min(3, C)) の形式で num_images 枚の画像をタイルしたうえで、 monitorで指定したフォルダへ保存します。

値は画面に表示されるほか、ファイル <name>/{iter}-{image index}.png に出力されます 。

例 :

import numpy as np
m = Monitor('tmp.monitor')
mi = MonitorImageTile('noise_noise', m, interval=2, num_images=4)
x = np.random.randn(10, 3, 8, 8)
for i in range(10):
    mi.add(i, x)
パラメータ:
  • name (str) -- monitor の名前。画面に表示されるログの中で使用される他、出力される .txt ファイルの名前の一部としても使われます。

  • monitor (Monitor) -- Monitor クラスのインスタンス。

  • interval (int) -- 出力を表示する間隔。

  • num_images (int) -- 各イテレーションで単一の画像に保存するためにタイル化された画像の数。

  • normalize_method (function) -- 出力する画像に適用する正規化関数を指定します。この関数はNCHW形式の画像のミニバッチを numpy.ndarray として受け取り、入力を [0、1] の範囲にマッピングするものである必要があります。デフォルトでは、画像に対して min-max 正規化を行う関数が用いられます。

add(index, var)[ソース]

画像のミニバッチを monitor に追加します。

パラメータ:
  • index (int) -- 値のインデックス。通常は現在のイテレーションなど。

  • var (Variable, NdArray, or ndarray) -- (N, ..., C, H, W) 形式の画像のミニバッチ 。C == 2 の場合、ブルーチャネルが追加されます。C > 3 の場合、配列がスライスされ、C > 3 部分は無視されます。

ユーティリティ関数

nnabla.monitor.tile_images(data, padsize=1, padval=0)[ソース]

( B, C, H, W ) の形状の配列をタイル化された画像に変換します。

パラメータ:
  • data (ndarray) -- ( B, C, H, W ) の形状の配列。

  • padsize (int) -- 各タイルのパティングをこのサイズにします。

  • padval (float) -- パディングピクセルをこの値で埋めます。

戻り値:

タイル画像。

戻り値の型:

tile_image (ndarray)

nnabla.monitor.plot_series(filename, plot_kwargs=None)[ソース]

MonitorSeries の出力テキストファイルから系列データをプロットします。

パラメータ:
  • filename (str) -- MonitorSeries クラスによって生成された *.series.txt ファイルへのパス。

  • plot_kwags (dict, optional) -- :function:`matplotlib.pyplot.plot` に渡されるキーワード引数。

注釈

matplotlib パッケージが必要です。

nnabla.monitor.plot_time_elapsed(filename, elapsed=False, unit='s', plot_kwargs=None)[ソース]

MonitorTimeElapsed の出力テキストファイルから系列データをプロットします。

パラメータ:
  • filename (str) -- MonitorSeries クラスによって生成された *.series.txt ファイルへのパス。

  • elapsed (bool) -- True の場合、合計経過時間をプロットします。

  • unit (str) -- 's' , 'm' , 'h' , 'd' のいずれかから選択される時間単位。

  • plot_kwags (dict, optional) -- :function:`matplotlib.pyplot.plot` に渡されるキーワード引数。

注釈

matplotlib パッケージが必要です。