當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。