アサーションとテスト

Chainerはデバッグを簡易にするための機能を提供しています。

型チェック・ユーティリティ

Functionchainer.utils.type_check モジュールの体系的な型チェックを利用しています。 これにより、順方向(forward)や逆方向(backward)の実装の際、ユーザは簡単にバグを発見できるようになります。 幾つかの関数実装中に型チェックのサンプルとなるコードが実装されていす。

 

chainer.utils.type_check.Expr Expressionの抽象化構文木(AST)
chainer.utils.type_check.expect 与えられた全てのExpressionを評価しテストする
chainer.utils.type_check.TypeInfo 入力/勾配配列の型情報.
chainer.utils.type_check.TypeInfoTuple 入力/勾配タプルの型情報

 

勾配チェック・ユーティリティ

ほとんどの関数実装は勾配チェックによって数値的にテストされます。 このメソッドでは順方向(forward)ルーチンの数値勾配を計算し、その結果を対応する逆方向(backward)ルーチンの結果と比較します。 これにより、ユーザは、勾配計算エラーに遭遇した際、問題の根源を明確にすることが可能になります。

 

chainer.gradient_checkモジュールは勾配チェックの実装を容易にするものです。

 

chainer.gradient_check.check_backward 与えられたFunctionの逆方向(backward)処理をテストする関数
chainer.gradient_check.numerical_grad 有限差分法により数値勾配を演算する

 

標準的なアサーション

アサーションはNumpyのアサーションと同様の名前を持ちます。 Numpyとの違いは、numpy.ndarraycupy.ndarray両方に対応していることです。.

chainer.testing.assert_allclose あるxの要素とそれに対応するyの要素の差分が大きすぎる場合、表明する。

 

Functionテスト・ユーティリティ

ChainerはFunctionのテストのためのユーティリティを提供します。

chainer.testing.unary_math_function_unittest 単項のChainerの数学的な関数をテストするデコレータ