用法:
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()
相關用法
- Python mxnet.autograd.predict_mode用法及代碼示例
- Python mxnet.autograd.record用法及代碼示例
- Python mxnet.autograd.grad用法及代碼示例
- Python mxnet.autograd.pause用法及代碼示例
- Python mxnet.autograd.train_mode用法及代碼示例
- Python mxnet.symbol.op.broadcast_logical_xor用法及代碼示例
- Python mxnet.test_utils.get_zip_data用法及代碼示例
- Python mxnet.ndarray.op.uniform用法及代碼示例
- Python mxnet.symbol.op.log_softmax用法及代碼示例
- Python mxnet.symbol.space_to_depth用法及代碼示例
- Python mxnet.ndarray.op.sample_negative_binomial用法及代碼示例
- Python mxnet.ndarray.NDArray.ndim用法及代碼示例
- Python mxnet.module.BaseModule.get_outputs用法及代碼示例
- Python mxnet.module.BaseModule.forward用法及代碼示例
- Python mxnet.symbol.random_pdf_poisson用法及代碼示例
- Python mxnet.ndarray.op.khatri_rao用法及代碼示例
- Python mxnet.ndarray.op.unravel_index用法及代碼示例
- Python mxnet.symbol.argmin用法及代碼示例
- Python mxnet.symbol.linalg_potrf用法及代碼示例
- Python mxnet.ndarray.contrib.group_adagrad_update用法及代碼示例
注:本文由純淨天空篩選整理自apache.org大神的英文原創作品 mxnet.autograd.Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。