You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by GitBox <gi...@apache.org> on 2019/09/14 07:33:57 UTC
[GitHub] [incubator-mxnet] apeforest commented on a change in pull request
#15611: [MXNET-978] n-th order gradient test support.
apeforest commented on a change in pull request #15611: [MXNET-978] n-th order gradient test support.
URL: https://github.com/apache/incubator-mxnet/pull/15611#discussion_r324415885
##########
File path: tests/python/unittest/test_higher_order_grad.py
##########
@@ -302,28 +322,72 @@ def grad_grad_op(x):
def check_second_order_unary(x, op, grad_grad_op, rtol=None, atol=None):
+ check_nth_order_unary(x, op, grad_grad_op, 2, rtol, atol)
+
+
+def check_nth_order_unary(x, op, grad_ops, orders, rtol=None, atol=None):
+ """Assert n-th order autograd gradient against expected gradient.
+
+ Multiple order of gradients can be checked by passing list of
+ function computing the particular order gradient and passing the
+ corresponding list of order.
+
+ Note
+ ----
+ 1. Orders should always be monotonically increasing.
+ 2. Elements of grads_ops should correspond to elements of orders
+ i.e. grads_op = [grad_op, grad_grad_grad_op] should be passed with
+ orders = [1, 3]
+
+ Parameters
+ ----------
+ x : mxnet.NDArray
+ Input Array.
+ op : Callable
+ Operation to perform on Input Array.
+ grad_ops : Callable or List of Callable
+ Function to compute and assert gradient of given order.
+ orders : int or List of int
+ Order/s to assert expected and computed gradients.
+
+ Returns
+ -------
+ None
+
+ """
+ if isinstance(orders, int):
+ orders = [orders]
+ grad_ops = [grad_ops]
+
x = nd.array(x)
- grad_grad_x = grad_grad_op(x)
x.attach_grad()
- # Manual head_grads.
- y_grad = nd.random.normal(shape=x.shape)
- head_grad_grads = nd.random.normal(shape=x.shape)
+ order = max(orders)
Review comment:
If orders is monotonically increasing, should this just be orders[-1]?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services