chainer.report(values, observer=None)[source]

観察値をカレントのReporter オブジェクトとともに報告する。

 

どのReporter オブジェクトもwith文によってカレントとして設定することが可能です。この関数は、カレントのReporterの Report.report() メソッドを呼び出します。カレントのReporterオブジェクトがない場合、この関数は何も行いません。

 

 

Example

最も一般的な例はLinkとChain内での使用です。LinkはカレントのReporterにオブザーバとして登録されていると仮定してください。 (たとえば、Optimizerのターゲットリンクは自動的に TrainerのReporterに登録されます。)Linkのあるアタイは下記のように報告できます。

 


class
MyRegressor(chainer.Chain):
def __init__(self, predictor):
super(MyRegressor, self).__init__(predictor=predictor)

def
__call__(self, x, y):
             # このChainは予測値とyの平均絶対誤差と平均二乗誤差を計算しているだけ。
pred = self.predictor(x)
abs_error = F.sum(F.abs(pred - y)) / len(x.data)
loss = F.mean_squared_error(pred, y)
     
     # 平均絶対誤差と平均二乗誤差を報告する。
report({'abs_error': abs_error, 'squared_error': loss}, self)
return loss

 

このLinkが階層において 'main' と名付けられている場合 ( 'main' は StandardUpdaterターゲットリンクのデフォルト名)、上記の例で報告された値は 'main/abs_error' と 'main/squared_error'と名付けられます。これらの値が Evaluator extension内で報告された場合、 'validation/' がLink名の先頭に加えられ、アイテム名はそれぞれ'validation/main/abs_error' と 'validation/main/squared_error' へ変更されます。('validation'はEvaluator extensionのデフォルト名).

 

Parameters:
  • values (dict) – 観察値の辞書
  • observer – Observer オブジェクト。このオブジェクトID はオブザーバ名の取得に利用され、取得したオブザーバ名は観察値の登録名の接頭辞として用いられる。