用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。