当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python mxnet.autograd.Function用法及代码示例


用法:

class mxnet.autograd.Function

基础:object

在 autograd 中自定义差异化。

如果不想使用默认 chain-rule 计算的梯度,可以使用 Function 自定义微分进行计算。您在前向方法中定义您的计算,并在后向方法中提供自定义的微分。在梯度计算期间,autograd 将使用用户定义的后向函数而不是默认的chain-rule。您还可以强制转换为 numpy 数组并返回以进行一些向前和向后的操作。

例如,一个稳定的 sigmoid 函数可以定义为:

class sigmoid(mx.autograd.Function):
    def forward(self, x):
        y = 1 / (1 + mx.nd.exp(-x))
        self.save_for_backward(y)
        return y

    def backward(self, dy):
        # backward takes as many inputs as forward's return value,
        # and returns as many NDArrays as forward's arguments.
        y, = self.saved_tensors
        return dy * y * (1-y)

然后,可以通过以下方式使用该函数:

func = sigmoid()
x = mx.nd.random.uniform(shape=(10,))
x.attach_grad()

with mx.autograd.record():
    m = func(x)
    m.backward()
dx = x.grad.asnumpy()

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.autograd.Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。