Chainerはデバッグを簡易にするための機能を提供しています。
Function
は chainer.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.ndarray
と cupy.ndarray
両方に対応していることです。.
chainer.testing.assert_allclose | あるxの要素とそれに対応するyの要素の差分が大きすぎる場合、表明する。 |
ChainerはFunctionのテストのためのユーティリティを提供します。
chainer.testing.unary_math_function_unittest | 単項のChainerの数学的な関数をテストするデコレータ |